[인스타그램 클론코딩] 03. 로그인 구현(Front-End)

2023. 2. 1. 14:11·Web/인스타 클론 코딩

1. SignIn.js 작성

const SignIn = () => {
    const signin = [
        {name: 'email', type: 'text', placeholder: '이메일'},
        {name: 'password', type: 'password', placeholder: '비밀번호'}
    ]

    const [inputs, setInputs] = useState({
        email: '',
        password: ''
    })

    const onChange = (e) => {
        const {value, name} = e.target;
        setInputs({
            ...inputs,
            [name]: value
        });
    };

    const navigate = useNavigate();

    const onSubmit = () => {
        authAxios.post("/login", inputs)
            .then((res) => {
                const accessToken = res.data.accessToken;
                localStorage.setItem('accessToken', accessToken);
                alert("로그인에 성공하였습니다!");
                navigate("/outstagram");
            })
            .catch((err) => {
                alert(err.response.data);
            });
    };

    return (
        <>
            <div className={style.sign_input_container}>
                <div className={style.logo}>
                    OutStagram
                </div>
                {signin.map((component, idx) => {
                    return (<input key={idx} className={style.inputs} name={component.name} type={component.type} placeholder={component.placeholder} onChange={onChange}/>);
                })}
                <button className={style.buttons} onClick={onSubmit}>로그인</button>
            </div>

            <div className={style.sign_nav_container}>
                <div>
                    계정이 없으신가요?
                </div>
                <div className={style.nav_link} onClick={() => navigate('/users/sign-up')}>
                    가입하기
                </div>
            </div>
        </>
    );
};

export default SignIn;

 

- 회원가입과 마찬가지로 inputs의 값들을  백엔드의 /login url로 요청한 후, 요청이 올바르게 응답되었다면 accessToken을 localStorage에 저장 후 main 컨테이너로 redirec하고 에러가 발생했다면 그 에러에 대해 alert 해준다.

 

2. App.js 수정

const App = () => {
  return (
    <Router>
      <Routes>
        <Route path="/users" element={<UserContainer/>}>
            <Route path='sign-in' element={<SignIn/>}/>
            <Route path='sign-up' element={<SignUp/>}/>
        </Route>
        <Route path="/outstagram" element={<MainContainer/>}>

        </Route>
      </Routes>
    </Router>
  );
}

export default App;

 

- url '/users/sign-in' 이 SignIn 컴포넌트를 랜더링하게 설정한다.

- url '/outstagram' 이 MainContainer 컴포넌트를 랜더링하게 설정한다.

 

 

3. 실제 동작 모습

 

 

저작자표시 비영리 변경금지 (새창열림)

'Web > 인스타 클론 코딩' 카테고리의 다른 글

[인스타그램 클론코딩] 04. JWT 필터 구현(Front-End)  (0) 2023.02.01
[인스타그램 클론코딩] 04. JWT 필터 구현(Back-End)  (0) 2023.02.01
[인스타그램 클론코딩] 03. 로그인 구현(Back-End)  (0) 2023.02.01
[인스타그램 클론코딩] 02. 회원 가입 구현(Front-End)  (0) 2023.01.31
[인스타그램 클론코딩] 02. 회원 가입 구현(Back-End)  (0) 2023.01.31
'Web/인스타 클론 코딩' 카테고리의 다른 글
  • [인스타그램 클론코딩] 04. JWT 필터 구현(Front-End)
  • [인스타그램 클론코딩] 04. JWT 필터 구현(Back-End)
  • [인스타그램 클론코딩] 03. 로그인 구현(Back-End)
  • [인스타그램 클론코딩] 02. 회원 가입 구현(Front-End)
뚝딱뚝딱2
뚝딱뚝딱2
  • 뚝딱뚝딱2
    개발도상국
    뚝딱뚝딱2
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 공부
        • Java
        • Spring Boot
        • LORA
      • Web
        • 인스타 클론 코딩
        • GPT 응답 API 서버
        • Spring Boot 예외 처리
        • 코테 준비용 서비스 만들기
      • DevOps
        • 쿠버네티스
        • 서버 만들기
      • 코딩테스트
        • 알고리즘
      • 교육
        • 스파르타코딩클럽 - 내일배움단
        • 혼자 공부하는 컴퓨터 구조 운영체제
      • 잡다한것
  • 블로그 메뉴

    • 홈
  • 링크

    • GITHUB
  • 공지사항

  • 인기 글

  • 태그

    mapstruct
    인스타그램
    스프링 부트
    백준
    리액트
    Entity
    클러스터
    스프링부트
    티스토리챌린지
    chat GPT
    react
    OpenAI API
    MSA
    오블완
    Java
    예외
    spring boot
    클론코딩
    REST API
    쿠버네티스
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
뚝딱뚝딱2
[인스타그램 클론코딩] 03. 로그인 구현(Front-End)
상단으로

티스토리툴바