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

gskm77037님의 프로필 이미지
gskm77037

작성한 질문수

따라하며 배우는 리액트 A-Z[19버전 반영]

React.memo 를 이용한 렌더링 최적화

[React.memo] useState의 setState는 변경되지 않는가요?

작성

·

357

0

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

 

React.memo로 렌더링 최적화 강의를 듣다가 질문이 생겼습니다.

React.memo는 props가 변하지 않으면 다시 렌더링 하지 않는다고 알고 있는데요.

App.js에서 useState의 결과물인 setState(setTodoData 등)가 List.js의 props로 내려가는데, 이는 변화로 보지 않는 것으로 보았습니다.

아래의 단순화된 useState의 구현을 보면

useState로 나온 state는 클로저를 통해 값이 변경되지 않으면 useState가 같은 값?참조?를 내려주는 것 같은데, setState는 매번 새로 생성되어 참조가 바뀔 것 같다는 생각을 하였습니다. 그래서 React.memo가 매번 새로 생성되는 setState를 보고 props가 바뀌는 것으로 인식하여 렌더링을 해주어야 하지 않을까 했는데... 실제로는 그렇지 않더라고요

물론 단순화된 구현이고 실제 리액트의 구현은 복잡한 과정을 거쳐 같은 참조를 내려줄 것 같다고 생각이 드는데요.

이 마법같은 과정이나 원리, 키워드에 대해서 아무리 찾아도 찾을 수가 없어서 도움을 청하고자 질문을 남깁니다...

감사합니다.

 

const MyReact = (function() {
  let _val // hold our state in module scope  return {
    render(Component) {
      const Comp = Component()
      Comp.render()
      return Comp
    },
    useState(initialValue) {
      _val = _val || initialValue      function setState(newVal) {
        _val = newVal
      }      return [_val, setState]
    }
  }
})()

출처: https://medium.com/hcleedev/web-usestate%EC%9D%98-%EB%8F%99%EC%9E%91-%EC%9B%90%EB%A6%AC%EC%99%80-%ED%95%A8%EC%A0%95-7b4825c16b9

답변

답변을 기다리고 있는 질문이에요
첫번째 답변을 남겨보세요!
gskm77037님의 프로필 이미지
gskm77037

작성한 질문수

질문하기