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 Form
onSubmit함수는 나중에 사용될 거라 일단 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 |