Login, Register 페이지 UI 생성하기
로그인 및 회원가입 UI 구성상 비슷함으로 같이 작업하겠습니다.


LoginPage 및 RegisterPage 폴더입니다.
기본 index.jsx이외에 signin과 signup컴포넌트 생성했습니다. 이 둘 컴포넌트는 form을 작성할 예정입니다.


LoginPage 및 RegisterPage의 .jsx파일입니다.


SignIn 및 SignUp 컴포넌트의 .jsx파일입니다.



components폴더안에 form의 jsx와 scss파일입니다.
React Hook Form을 이용한 유효성 체크
npm install react-hook-form위 명령어를 통해 form hook을 설치합니다.
유효성 검사 코드 작성시 되게 지저분할 수 있습니다. react hook form을 설치함을 통해 깔끔하고 시간도 많이 절약할 수 있습니다.
react hook form공식 문서: https://react-hook-form.com/


Form.jsx에서 form hook을 사용법과 ui입니다.
자세한 코드는 아래에 첨부했습니다.
import React from 'react'
import styles from './Form.module.scss'
import { useForm } from 'react-hook-form'
const Form = ({ title }) => {
  const { register, handleSubmit, formState: { errors }, reset } = useForm({
    mode: 'onChange'
  })
  const onSubmit = ({ email, password }) => {
    console.log(email, password)
  }
  const userEmail = {
    required: '필수 필드입니다.',
    pattern: {
      value: /^([A-Z|a-z|0-9](\.|_){0,1})+[A-Z|a-z|0-9]\@([A-Z|a-z|0-9])+((\.){0,1}[A-Z|a-z|0-9]){2}\.[a-z]{2,3}$/gm,
      message: '입력하신 이메일 주소가 올바르지 않습니다.'
    }
  }
  const userPassword = {
    required: '필수 필드입니다.',
    minLength: {
      value: 4,
      message: '최소 4자입니다.'
    },
    maxLength: {
      value: 13,
      message: '최대 13자입니다.'
    },
    pattern: {
      value: /^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,}$/gm,
      message: '최소 8자이며, 영문 1자, 숫자 1자'
    }
  }
  return (
    <form onSubmit={handleSubmit()} className={styles.form}>
      <div>
        <input type='email' placeholder='E-mail' {...register('email', userEmail)} />
        {errors?.email &&
          <div>
            <span className={styles.form_error}>{errors.email.message}</span>
          </div>
        }
      </div>
      <div>
        <input type='password' placeholder='Password' {...register('password', userPassword)} />
        {errors?.password &&
          <div>
            <span className={styles.form_error}>{errors.password.message}</span>
          </div>
        }
      </div>
      <button type='submit'>{title}</button>
      <span className={styles.form_error}></span>
    </form>
  )
}
export default FormonSubmit함수는 나중에 사용될 거라 일단 console.log만 찍겠습니다.
유효성 검사는 '유효성검사 정규표현식' 구글링하면 나옵니다.
useForm사용법은 공식문서를 참조하면 됩니다.
파이어베이스 연결하기
회원가입 및 로그인이 좀 더 쉬운 방식으로 파이어베이스를 이용하겠습니다. https://firebase.google.com/

앱을 추가 후 web을 클릭합니다.


웹을 등록한 후 npm설치등 지시를 따라서 하면 됩니다.
src폴더안에 firebase.js파일을 생성한 후 오른쪽 빨간 박스 부분을 복붙합니다.
export default app; 도 추가해서 다른 데에서도 사용할 수 있게끔 합니다.





이메일과 비밀번호로 가입할 수 있는 권한을 설정해줍니다.
인증 기능 구현하기


左) SignUp.jsx파일의 코드입니다.
右) SignIn.jsx파일의 코드입니다.


Form.jsx파일의 변경된 코드입니다.
SignUp과 SignIn에서 받아온 getDataForm 및 firebaseError을 사용합니다.
reset()는 버튼 클릭 후 input창에 입력했던 내용을 지워주는 함수입니다.
'배워서 따라하는 포플 > 쇼핑몰 앱' 카테고리의 다른 글
| react로 쇼핑몰 만들기(6) - Nav, Order (0) | 2023.10.10 | 
|---|---|
| react로 쇼핑몰 만들기(5) - 상세페이지, 장바구니, MockAPI (0) | 2023.10.04 | 
| react로 쇼핑몰 만들기(4) - Product 불러오기 (0) | 2023.09.30 | 
| react로 쇼핑몰 만들기(3) - Category 컴포넌트 (0) | 2023.09.27 | 
| react로 쇼핑몰 만들기(1) - layout 생성 (0) | 2023.09.25 | 
 
                  
                 
                  
                 
                  
                