강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

travelc2bd3님의 프로필 이미지
travelc2bd3

작성한 질문수

[리뉴얼] React로 NodeBird SNS 만들기

getServerSideProps 관련 질문입니다.

작성

·

184

0

로그인 이 완료되면

Router.push('/');

메인화면으로 이동합니다

메인화면에서는 getServerSideProps로 유저 정보를 가져옵니다.

export const getServerSideProps = wrapper.getServerSideProps(async (context) => {
const cookie = context.req ? context.req.headers.cookie : '';
if (context.req && cookie) {
axios.defaults.headers.Cookie = cookie;
}

context.store.dispatch({
type: LOAD_MY_INFO_REQUEST,
});

context.store.dispatch(END);
await context.store.sagaTask.toPromise();
});

그 다음 useEffect에서 myInformation을 찍어보면 로그가 2번 찍힙니다.

useEffect(() => {
console.log(myInformation);
}, [myInformation]);

로그 :

Router.push로 이동한것은 로그가 2번찍히고

URL을 직접 입력하면 정상적으로 로그가 한번 찍힙니다.

이 경우 어떻게 해결을 해야할까요?

답변 1

0

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

호출되는 이유는 간단합니다. myInfo가 바뀌어서 그렇습니다. 컴포넌트 로딩 시 한 번 찍히고 바뀐 후에 한 번 더 찍히는 겁니다. 모양이 동일하다고 생각할 수 있지만 객체가 다른 객체라서 다르게 찍히는 겁니다. hydrate 때문에 어쩔 수 없을겁니다.

travelc2bd3님의 프로필 이미지
travelc2bd3

작성한 질문수

질문하기