inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

React로 NodeBird SNS 만들기

7-1. 서버 사이드 렌더링(SSR)

SSR 을 위한 데이터 처리

172

슈퍼장

작성한 질문수 5

0

강의에서는 getInitialProps 가 서버, 클라이언트 모두 실행되기 때문에 ssr 처리를 위한 api 를 호출한다고 하신거 같은데 저는 nextjs 사용하면서 컴포넌트 내에 직접 api 호출 로직을 가지고 있고 싶지 않아서 ssr 처리를 위한 api 호출은 express 라우터 컨트롤러에서 호출하도록 하였습니다. 나머지 api 들은 사가에 넣고 처리하도록 하였구요.

이 부분까지는 어느정도 장단이 있거나 취향으로 생각할 수 도 있을 것 같은데 어떻게 생각하시는지 궁금합니다.

그리고 SSR 처리시 props 가 아닌 state 로 렌더링 하고 싶다면 createStore 실행 시점에 preloadState 에 해당 api 응답 값이 들어가서 store 가 생성되고 컴포넌트에 전달 되어야 컴포넌트 내에서 state 로 참조하여 렌더링할 수 있습니다.

하지만 언급하신 컴포넌트 내 getInitialProps 사이클에서 api 호출시 createStore 실행 시점에 preloadState 로써 값 전달이 힘들 것 같은데요. 이런 경우는 어떻게 처리할 수 있는지도 궁금합니다.

저는 getInitialProps 에서 api 호출하여 응답값을 컴포넌트의 props 로 넘기고 해당 값을 dispatch payload 값으로 넘겨 리듀서를 통해 store 에 넣었습니다. 그리고 나서 state 를 꺼내서 컴포넌트에서 참조하도록 하였는데 이 경우도 ssr 처리는 잘 되었지만 적절하지 않은 스토어 초기화를 위한 액션이 발생하는 것 자체가 부자연 스러운 것 같 습니다. 그래서 express 라우터 컨트롤러에서 호출하여 _app.js 로 넘겨 거기서 store 생성시 참조하도록 하고 있습니다.

혹시 더 좋은 방법이 있을까요?

javascript react

답변 1

0

제로초(조현영)

getInitialProps에서 처리하고싶지 않으신 이유가 있나요? 사실 이 경우는 next를 쓸 이유가 크게 떨어지긴 합니다. 하지만 문제는 없습니다.

state(리덕스 말씀하시는거죠?)로 렌더링하시려면 getInitialProps에서 context.store.dispatch 하셔야합니다. 여기에서 액션이 부자연스럽다는 말씀이 어떤 뜻인지 지금으로서는 잘 모르겠습니다.

현재 next.js의 기능을 사용하지 않으신다면 그냥 express 상에서 react SSR을 하는 게 더 효율적이어 보입니다. 그 때 store에 state도 넣어줄 수 있는데 이 경우에도 express에서 store.dispatch를 하긴 합니다.

next 10 이상에서는 redux dev tool 구동이 안되나요?

0

272

1

세션 갱신 문의 건

0

484

7

배포 진행 후 Highlight updates components render 표시

0

445

1

똑같은 기능을 하는 테이블

0

448

4

관계형

0

312

2

프론트 서버를 이용하지 않는경우

1

299

3

인피니트 스크롤링 사용시 오류

0

278

0

계속 이런에러가 떠서 해결하기는 했는데 어떤 의미인지 모르겠습니다.

0

435

2

req.user가 언제 생성되나요??

0

330

2

Cannot read property 'id' of null 에러

0

333

1

리트윗한 게시글 불러오는 sequelize

0

252

1

result.data에서 images인 이유

0

281

2

takeLatest에 대한 질문입니다.

1

342

2

프론트에서 express를 사용하지 않을때 동적라우팅

0

501

6

getInitialProps가 클라이언트에서 수행되는 이유?

0

258

1

리로드하면 팔로우 언팔로우 값이 초기화 되는 문제입니다.

0

445

2

스타일드 컴포넌트와 className을 통한 스타일 적용의 차이에 대해 궁금합니다

0

585

2

할인 쿠폰 사용이 안되는되요 (848-f9af83f183e3)

0

365

1

nodejs mvc 패턴

0

976

4

사용하고 보니, 람다 구성이 궁금합니다!

0

266

1

제로초님

0

445

1

새로고침 로그인 풀림 문제.

0

247

1

안녕하세요. 강의 너무 감사합니다

0

157

1

제로초님

0

170

1