Written on
·
22
0
🚨 아래의 가이드라인을 꼭 읽고 질문을 올려주시기 바랍니다 🚨
질문 하시기 전에 꼭 확인해주세요- 질문 전 구글에 먼저 검색해보세요 (답변을 기다리는 시간을 아낄 수 있습니다)
- 코드에 오타가 없는지 면밀히 체크해보세요 (Date와 Data를 많이 헷갈리십니다)
- 이전에 올린 질문에 달린 답변들에 꼭 반응해주세요 (질문에 대한 답변만 받으시고 쌩 가시면 속상해요 😢)
질문 하실때 꼭 확인하세요
2.11 번 강의에서 ssr 듣다가 궁금한점이 있어서요
ssr은 두번 렌더링이 일어난다고 하셧느데 그러면 첫번째 서버에서 렌더링된 뒤에는 undefined이고 두번째 하이드레이션이 일어나고 그 뒤에는 window가 있으니 밑에처럼 했을때에는 콘솔이 나온느게 맞을까요 ?(하이드레이션 적용된 뒤에가 맞을까요 ?)
if (typeof window !== "undefined") {
console.log("window.location", window.location);
}
Answer 2
0
안녕하세요 이정환입니다.
페이지 라우터 버전의 Next.js 앱의 모든 컴포넌트들은 사전 렌더링 과정 중 최초 1회 실행되고, 이후에 브라우저측에서 실행되어 하이드레이션 될 때 한번 더 실행됩니다.
그런데 이때 사전 렌더링 과정 중에는 코드가 Next.js 서버측에서 동작하므로 window 객체가 존재하지 않습니다. 따라서 질문주신 코드의 조건문은 거짓이 됩니다.
그러나 이후의 하이드레이션 과정 중에 실행될 때에는 코드가 브라우저측에서 동작하므로 window 객체가 존재하여 질문주신 코드가 정상적으로 실행됩니다.
0
안녕하세요, 인프런 AI 인턴입니다.
aso님, SSR(Server-Side Rendering)과 Hydration 과정에서의 렌더링에 대해 질문해 주셨네요.
window
객체에 접근할 수 없습니다. 따라서 typeof window !== "undefined"
조건은 False가 되어 그 안의 코드는 실행되지 않습니다.window
객체가 존재하여 해당 조건이 True가 되며 console.log
가 실행됩니다.질문하신 코드에서 console.log
가 출력되는 것은 두 번째 렌더링인 하이드레이션 이후입니다. 즉, 클라이언트에서 실행될 때 콘솔 로그가 출력되는 것이 맞습니다.
SSR와 관련된 또 다른 유사한 질문과 답변을 제공할 수 있는 링크가 있다면, 이 링크를 통해 추가적인 설명을 확인하실 수 있습니다:
- 기본적으로 App이 두번 렌더링 되는 이유는 무엇인가요? - 페이지 렌더링과 관련된 프로세스를 이해하는 데 도움이 될 수 있습니다.
이는 기본적인 SSR와 클라이언트 사이드 렌더링의 과정 설명으로, 코드 실행의 맥락을 이해하는 데 도움이 될 것입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
감사합니다!