그동안 리액트로 작업을 할땐 router를 이용하는 방식을 썼는데, 이런식으로 라우터라는 js 폴더를 만들어서 Route 안에 element 속성으로 컴포넌트를 끼워주었었다.
next.js를 사용하면서 로그인 페이지를 페이지는 하나만 쓰고, 컴포넌트를 갈아끼우는 방식으로 사용하려고 했는데
pages라는 폴더에서 페이지를 생성한 뒤 데려오는 방식만 알다가
(React에서 react-router-dom의 라우팅은 CSR을 제공하고 Next에서 제공하는 File System의 라우팅은 SSR을 제공)
리액트라우터돔없이 컴포넌트를 데려오려하니 갑자기 멍- 해졌었다
우선적으로 하나의 페이지에서 컴포넌트를 갈아끼워주는걸 해주고 싶었기에 튜터님의 힌트를 통해 state 하나를 만들어서 아래처럼 컴포넌트를 갈아끼워지는것처럼 보이도록 만들었다.
const LoginPage = () => {
const [status, setStatus] = useState("login");
return (
<div>
Login Page입니다.
{status === "login" && <Login />}
{status === "signUp" && <Register />}
{status === "searchPW" && <Header />}
<button
type="button"
onClick={() => {
setStatus("signUp");
}}
>
회원가입하기
</button>
<button
type="button"
onClick={() => {
setStatus("searchPW");
}}
>
비밀번호 찾기
</button>
</div>
);
};
export default LoginPage;
요런식으로 로직 작성하면 되지롱
(이 코드의 회원가입하기랑 비밀번호 찾기는 추후 Login이라는 컴포넌트로 이사를 갔다고 한다 총총)
'✍ 따뜻한 개발 공부' 카테고리의 다른 글
NEXT.js + Firebase / next.js에서 env 환경변수 설정해주기 (0) | 2023.02.23 |
---|---|
3시간은 머리 싸맨거같은 브라우저 뒤로가기 버튼 클릭시 이전 페이지로 보내기 ( next.js + react 같은 페이지 내 컴포넌트 갈아끼우는거) (0) | 2023.02.16 |
다시 한번 짚고 가기 / 리액트 쿼리 복습 (0) | 2023.02.05 |
그래서 어떤 상황에 뭘 써야 하는데?! / CSR & SSR & ISR 정확히 정리하기 (0) | 2023.02.05 |
[TIL] 오늘의 개발일지 (1) | 2023.02.01 |
댓글