회원 가입 페이지 구현
1. 가입페이지 UI 구현.
return (
  // 중앙의 정렬쓰
    <div
      style={{
        display: "flex",
        justifyContent: "center",
        alignItems: "center",
        width: "100%",
        height: "100vh",
      }}
    >
      //버튼을 눌렀을때 onSubmitHandler 함수 호출
      <form
        style={{ display: "flex", flexDirection: "column" }}
        onSubmit={onSubmitHandler}
      >
         // 이메일, 이름, 패스워드, 패스워드 확인은 값이 바꼈을때 이벤트핸들러 호출 
        <label>Email</label>
        <input type="email" value={Email} onChange={onEmailHandler} />
        <label>Name</label>
        <input type="text" value={Name} onChange={onNameHandler} />
        <label>Password</label>
        <input type="password" value={Password} onChange={onPasswordHandler} />
        <label>Confirm Password</label>
        <input type="password" value={ConfirmPassword} onChange={onConfirmPasswordHandler} />
        <br />
        <button type="submit">Register</button>
      </form>
    </div>
  );
2. input에 들어온 값을 처리하기 위한 useState()
// email을 위한 state
  const [Email, setEmail] = useState("");
  // name을 위한 state
  const [Name, setName] = useState("");
  // password를 위한 state
  const [Password, setPassword] = useState("");
  // confrim를 위한 state
  const [ConfirmPassword, setConfirmPassword] = useState("");
3. 이벤트 발생 처리
  // input의 내용을 입력할 수 있게
  const onEmailHandler = (event) => {
    setEmail(event.target.value);
  };
  const onNameHandler = (event) => {
    setName(event.target.value);
  };
  const onPasswordHandler = (event) => {
    setPassword(event.target.value);
  };
  const onConfirmPasswordHandler = (event) => {
    setConfirmPassword(event.target.value);
  };
  const onSubmitHandler = (event) => {
    // 새로고침을 막아주기 위해
    event.preventDefault();
    // console.log(`email: ${Email}`);
    // console.log(`password: ${Password}`)
    // 비밀번호 일치 여부
    if(Password !== ConfirmPassword) {
      return alert('비밀번호가 일치하지 않습니다.')
    }
    let body = {
      email: Email,
      name: Name,
      password: Password
    };
    dispatch(registerUser(body));
  };
4. dispatch => action
- types.js 이 부분 추가.
 
export const REGISTER_USER = "register_user";
- user_actions.js 추가 및 수정
 
import { LOGIN_USER, REGISTER_USER } from './types';
export function registerUser(dataToSubmit) {
  // body의 데이터를 '/api/users/register' 로 보내고,
  // 서버의 DB에서 데이터를 비교한 후 보내온 가입성공여부 데이터를
  // reducer에서 처리
    const request = axios.post('/api/users/register', dataToSubmit)
        .then(response => response.data)
    return {
        type: REGISTER_USER,
        payload: request
    }
}
5. reducer
- user_reducer.js의 case추가.
 
case REGISTER_USER:
      return { ...state, registerSuccess: action.payload };
6. 그 처리한 데이터를 state에서 view로.
- RegisterPage.js
 
//request를 보내고 response의 데이터가 성공이면 로그인 페이지로
//아니면 알림창으로 실패메시지 알림.
dispatch(registerUser(body)).then((response) => {
      if(response.payload.success) {
        props.history.push("/login")
      } else {
        alert("Failed to sign up")
      }
    });
7. 작동 테스트
- 
우선 기본 UI

 - 
비밀번호가 다를 경우

 - 
회원가입에 실패한 경우(비밀번호가 최소 5자 이상)

 
-회원가입에 성공한 경우

- 로그인 페이지로 이동

 
ps. react 흐름 읽는게 익숙하지 않아서 정리가 산만한데, 후에 어느 정도 익숙해지면 다시 정리하겠습니다.
Author And Source
이 문제에 관하여(회원 가입 페이지 구현), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@dev_shu/회원-가입-페이지-구현저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
                                
                                
                                
                                
                                
                                우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)