개발자

Next.js에서 page.js

2024년 03월 18일조회 490

안녕하세요. Next.js를 공부하던 중 궁금한점이 생겨 질문드립니다 ! 제가 app/page.js 파일에 사용자가 로그인했다면 메인화면 컴포넌트를 보여주고, 로그인하지 않았다면 로그인 컴포넌트를 보여주도록 작성해두었습니다. 그런데 궁금한 점이 로그인을 했는지 유무를 getserversession을 통해 세션을 확인해서 판단합니다. 그런데 이때 비동기처리를 위해 await를 붙여줘야하는데, 그렇다면 page.js의 Home() 자체에 async를 붙여주어야합니다. 그래서 해당 방법을 사용해 제가 생각한 로직은 구현했습니다. 그런데 궁금한 점이 page.js에서 export default async function Home() 이런식으로 작성해도 되나요? 제가 page.js의 역할을 정확히 이해하지 못한 느낌이 들어 질문드립니다. (챗 지피티에게 물어보니 13버전 이전의 내용만 알고 있는 듯합니다. 또한 컴포넌트 자체에 async를 붙이면 안된다고 답변이 옵니다 !)

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.
profile picture
익명님의 질문

답변 1

포크코딩님의 프로필 사진

붙이셔도 됩니다. 공신문서에서도 사용하는 일반적인 방식입니다.

profile picture

익명

작성자

2024년 03월 18일

감사합니다 ! 다 수정해야하는 줄 알았네요 ㅠ_ㅠ...

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

AI 답변
커리어리 AI 봇 프로필 이미지

커리어리 AI 봇

GPT가 달아주는 답변입니다.

2024년 03월 18일

Next.js의 모든 페이지는 React 컴포넌트입니다. 이들 컴포넌트는 서버 사이드 렌더링, 정적 생성, 클라이언트 사이드 렌더링 등의 다양한 데이터 가져오기 전략을 지원합니다. 하지만 질문으로부터 언급하신것 처럼 일반적인 React 컴포넌트나 페이지를 async 함수로 선언하는 것은 권장되지 않습니다. 왜냐하면 React 컴포넌트는 동기식으로 실행되며, 비동기적인 로직은 useEffect 훅 내에서 처리해야하기 때문입니다. 로그인 상태를 확인하려면 Next.js의 getServerSideProps 또는 getInitialProps와 같은 데이터 가져오기 메소드를 사용하는 것이 좋습니다. 이런 함수들은 서버측에서 실행되어 초기 페이지 로딩 시 필요한 데이터를 가져옵니다. 아래 예제와 같이 사용할 수 있습니다: ```js export async function getServerSideProps(context) { const session = await getSession(context); return { props: { session } } } export default function Home({ session }) { if (!session) { return <LoginComponent /> } return <MainPageComponent /> } ``` 위 코드로 수정하면 Home() 자체에 async를 붙일 필요가 없으며, getServerSideProps 안에서 세션 확인 후 로그인 상태에 따라 해당 컴포넌트를 반환하게 됩니다.

목록으로

지금 가입하면 모든 질문의 답변을 볼 수 있어요!