#31 회원 가입 페이지
2022. 8. 4. 21:42ㆍTIL/따라하며 배우는 노드 리액트
728x90
[인프런] 따라하며 배우는 노드, 리액트 시리즈 - 기본강의를 들으며 정리한 내용입니다.
1. RegisterPage.js 파일에 회원가입 폼 추가
import React, { useState } from "react";
export default function RegisterPage() {
const [registerInfo, setRegisterInfo] = useState({
email: "",
name: "",
password: "",
confirmPassword: "",
});
const onChangeHandler = (e) => {
setRegisterInfo((registerInfo) => ({
...registerInfo,
[e.target.name]: e.target.value,
}));
};
const onSubmitHandler = (e) => {
e.preventDefault();
const body = {
email: registerInfo.email,
name: registerInfo.name,
password: registerInfo.password,
confirmPassword: registerInfo.confirmPassword,
};
};
return (
<div
style={{
display: "flex",
justifyContent: "center",
alignItems: "center",
width: "100%",
height: "100vh",
}}
>
<form
onSubmit={onSubmitHandler}
style={{
display: "flex",
flexDirection: "column",
justifyContent: "center",
alignItems: "flex-start",
}}
>
<label htmlFor="email">email</label>
<input
type="email"
name="email"
id="email"
value={registerInfo.email}
onChange={onChangeHandler}
/>
<label htmlFor="text">name</label>
<input
type="name"
name="name"
id="name"
value={registerInfo.name}
onChange={onChangeHandler}
/>
<label htmlFor="password">password</label>
<input
type="password"
name="password"
id="password"
value={registerInfo.password}
onChange={onChangeHandler}
/>
<label htmlFor="confirmPassword">confirmPassword</label>
<input
type="password"
name="confirmPassword"
id="confirmPassword"
value={registerInfo.confirmPassword}
onChange={onChangeHandler}
/>
<br />
<button type="submit">Register</button>
</form>
</div>
);
}
2. _actions/user_action.js 파일에 regiserUser 추가
import { LOGIN_USER, REGISTER_USER } from "./types";
export function registerUser(dataToSubmit) {
const request = axios
.post("/api/users/register", dataToSubmit)
.then((response) => response.data);
return {
type: REGISTER_USER,
payload: request,
};
}
3. types.js에 REGISTER_USER 타입 추가
export const REGISTER_USER = "register_user";
4. user_reducer.js파일에 case 추가하기
import { LOGIN_USER, REGISTER_USER } from "../_actions/types";
export default function (state = {}, action) {
switch (action.type) {
case LOGIN_USER:
return { ...state, loginSuccess: action.payload };
case REGISTER_USER:
return { ...state, register: action.payload };
default:
return state;
}
}
5. RegisterPage.js에 dispatch 적용
import { useDispatch } from "react-redux";
import { useNavigate } from "react-router-dom";
import { registerUser } from "../../../_actions/user_action";
export default function RegisterPage() {
const dispatch = useDispatch();
const navigate = useNavigate();
const onSubmitHandler = (e) => {
e.preventDefault();
const body = {
email: registerInfo.email,
name: registerInfo.name,
password: registerInfo.password,
confirmPassword: registerInfo.confirmPassword,
};
dispatch(registerUser(body)).then((response) => {
if (response.payload.success) {
navigate("/LoginPage");
} else {
alert("error");
}
});
};
...
}
'TIL > 따라하며 배우는 노드 리액트' 카테고리의 다른 글
#33 인증 체크 (0) | 2022.08.04 |
---|---|
#32 로그아웃 (0) | 2022.08.04 |
#29,30 로그인 페이지 (0) | 2022.08.04 |
#26,27 Redux 기본 설정 (0) | 2022.08.04 |
#24 Concurrently (0) | 2022.08.04 |