11.17航海66日目TIL


Eメールチェック


東雨は会員の入会部分を担当しており、有効性検査に合格できない場合は、次のような警告メッセージが送られます.

メールが重複している場合も下記の警告メッセージを表示しますが、デザイナーと話しているときはサーバー上の情報が下に表示されにくいので、横で聞いているときに「まずは下から始めましょう」と言って、私の領域ではないので話せず、見たところ統一性がないので、自分で簡単にやってみました.
  • 既存コード
  • <form
      onSubmit={handleSubmit(async (emailInfo) => {
        console.log(emailInfo);
        await dispatch(sendEmailAuth(emailInfo));
      })}
    >
    
    <StyledInput
      type="text"
      // placeholder="이메일을 입력해주세요"
      {...register('email', {
        required: '이메일을 입력해주세요',
        pattern: {
          value:
            /^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$/,
          message: '이메일 양식에 맞지 않습니다',
        },
      })}
    />
    
    {errors.email && (
      <ErrorMessage>{errors.email.message}</ErrorMessage>
    )}
  • 修正コード
  • // 서버와 통신 시 받는 에러메시지
    const [errorMessage, setErrorMessage] = React.useState('') 
    
    // 통신해서 받는 데이터를 바로 state에 넣어주었다.
    <form
      onSubmit={handleSubmit(async (emailInfo) => {
        const { data } = await axios.post(`${baseURL}/email/send`, emailInfo);
        if (data.result === 'success') {
          await dispatch(emailAuth(emailInfo))
        }
        setErrorMessage(data.errorMessage)
      })}
    >
    
    // 기존에 있던 유효성 검사
    <StyledInput
      type="text"
      // placeholder="이메일을 입력해주세요"
      {...register('email', {
        required: '이메일을 입력해주세요',
        pattern: {
          value:
            /^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$/,
          message: '이메일 양식에 맞지 않습니다',
        },
      })}
    />
    
    // 상황 별 에러메시지 출력
    {errors.email ? <ErrorMessage>{errors.email.message}</ErrorMessage>
    	: errorMessage && <ErrorMessage>{errorMessage}</ErrorMessage> }
    
  • 動作確認

  • 私の分野ではないので、一度だけ話しましたが、これがアラトになったら...心が痛くなりそうです.