inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

따라하며 배우는 노드, 리액트 시리즈 - 기본 강의

React re-rendering 관련 질문

179

김정현

작성한 질문수 1

0

안녕하세요! 양질의 강의 감사드립니다.

구현 중 해결되지 않는 부분이 있어 질문 올립니다.

사용자가 의도한 움직임만 하면 좋겠지만, 간혹 직접 URL을 입력하는 경우에 대해 고민하고 있습니다.

여기에서 발생한 한가지 문제가 있습니다.

만약 사용자가 게시글을 조회하고자할 때

정상적으로 조회하는 것이 아닌, URL을 통해 게시글의 id를 직접 접근하는 경우를 생각했습니다.

그런데 만약 해당 id가 DB에 없을 때가 있을 수 있고, 이것이 문제가 될 것입니다.

이 때 브라우저에 alert를 발생시키고 Redirect 시키도록 만들어보았습니다.

그런데 이 때 정상적인 게시글도 접속시 alert가 발생하는 것을 발견했습니다.

확인해보니, 서버의 payload값이 클라이언트의 status를 업데이트하기전에

이미 리액트가 초기렌더링을 마쳐두어 기본값으로 설정해뒀던 false 값으로 인해

정상적인 글도 alert가 발생하는 것을 확인했습니다.

물론 false일 때 텅 빈 <div>를 렌더링시킨 뒤, 리렌더링되는 것을 기다려도 되겠지만

리액트가 setState를 마치고나서 렌더링하는 동기적인 방법이 있을까요?

위 이미지에서 보시는 것처럼

false는 서버로부터 payload값을 받아와 저장하는 ServerRes status의 기본값이고,

여러번 false로 렌더링되다가 서버에서 보내준 payload 값을 ServerRes에 업데이트하여

유도된 페이지가 렌더링되는 것을 확인할 수 있었습니다.

아직 react-hook이 익숙하지 않아 발생하는 문제인 것 같습니다 ㅠ.ㅠ. 감사합니다.

react nodejs

답변 1

0

김정현

올린지 얼마 안되어 해결글을 올리니 조금 머쓱하네요 ㅎㅎ;

state의 값을 true 또는 false 로만 생각하고 있었던 것이 문제였습니다.

useEffect가 status update시에만 동작한다는 점을 고려하여

payload값을 받아올 status 값의 기본값으로 Default 라는 문자열을 넣어둔 뒤

useEffect 메서드 내부에서 ReactDOM을 이용하여

변경되는 status 값(true 또는 false로 변경됨) 에 따라

초기 렌더링된 div container 내부에 각기 다른 element를 렌더링하는 방식으로 해결되었습니다.

또한 렌더링될 element들은 Function으로 리턴받도록해 의도치 않은 실행을 방지시켰습니다.

감사합니다!

깃 이메일이랑 비번이 필요하다고 하네요

0

54

1

404 에러

0

120

1

34강 인증 체크에서 element 사용 때문에 에러나시는 분들 이렇게 하심 됩니다.

0

138

1

로그인, 로그아웃, 토근 작동 안 함

0

257

0

9강 오류 어떻게 해결하나요?

0

198

1

localhost 에서 연결을 거부했습니다.

0

1972

4

포스트맨에서 true가 안떠요

0

157

1

왜 안되나요

0

133

1

몽고db 연결 오류가 납니다 위에껀 입력한 코드, 아래껀 터미널이에요

0

250

1

로그아웃 401 에러(Unauthorized)

0

519

2

암호가 해싱되지 않고 입력값 그대로 db에 저장되는 문제

0

159

1

7강중에서

0

177

2

User.findByToken is not a function

0

215

1

루트 디렉토리

0

282

1

useState

0

570

1

프록시 잘 설정했는데도 404 오류 뜨는 분들

5

906

6

webpack 관련 에러 질문

0

225

1

리액트 관련 질문

0

282

1

14강 로그아웃 안됨

0

325

1

mongoDB 데이터 확인하는 법

0

414

1

postman 에러

0

297

1

선생님 리덕스를 사용하면 어떠한 부분이 좋은지 알 수 있을까요?

0

240

1

다음과 같은 에러들이 발생합니다.

0

283

1

14강 로그아웃 기능 구현시 postman에서 Cannot POST 오류가 뜹니다.

0

386

1