다들 아는 것처럼 React.js 는 변화를 감지하고 Rerendering 을 진행한다.
그런데, 변화가 있었는데도 불구하고 (useState든, setState든) Rerendering 이 되지 않을 경우가 있다.
그럴 경우, Rerendering을 하는 Object의 크기를 봐야한다.
만약 내부에 객체 속성이 많을 경우 React.js는 변화를 감지 할 수 없을 수도 있기에,
사용할 object의 속성을 우리가 필요한 속성만 가져다 쓰는 간략화? 경량화?의 과정을 거쳐야 한다.
필자는 firebase 에 데이터를 요청해서 쓰고 있었는데, 리렌더가 되지 않아 확인 했더니,
firebase에서 보내는 object가 너무 커서 생기는 문제였다.
그래서 object에서 필자가 사용하는 object의 요소만 가져와서 사용하였다.
강의 내용 중 다른 방법도 제시 됬는데,
State를 변경 하는 함수에서, Object.assign({},obj) 를 이용하는 방법이다.
Object.assign 함수는 첫 번째 인자로 타겟, 두번째 인자로 소스를 요구하며
소스의 오브젝트를 타겟으로 배치하는 함수이다.
저런식으로 빈 오브젝트에 기존 오브젝트를 배치하게 되면,
리액트는 새로운 오브젝트가 생성된 걸 감지한 후 리렌더링을 진행하게된다.
이런 문제가 생길 경우 콘솔로 찍어봐도 변화를 "우리는" 찾을 수 있어서 ( 실제로 리렌더만 진행 안되고 있는 것이지
값의 변화는 있다. ) 디버깅이 힘들 수가 있기에 포스팅 해본다.
결국 판단의 주체는 리액트가 하는 것임을 상기 시켜주는 문제이다.
'FrontEnd > React' 카테고리의 다른 글
Npm install 시 프로젝트 이름 관련 에러 (0) | 2021.08.03 |
---|---|
React.js 의 상태를 임의로 변화하지 말아야 할 이유 (0) | 2021.08.03 |
React 앱과 Jest를 이용할때 Dependency 문제의 해결법 (0) | 2021.07.28 |
React 앱을 Heroku로 배포할때 env 적용 방법 (0) | 2021.07.21 |
React 와 Gin 연동하기 위한 프록시 설정 (0) | 2021.07.19 |