[React.memo] useState의 setState는 변경되지 않는가요?
427
작성한 질문수 3
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 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]
}
}
})()
답변 0
강의 소스 코드 압축 풀기 오류
0
72
1
런타임 에러 ㅠㅠ
0
87
1
강의대로 따라갔는데 에러보다 api키로 들어간 넷플릭스? 그런게 렌더링 되지 않습니다 ㅠ
0
104
1
안녕하세요 개발과 상관없는 질문입니다만
0
112
1
리액트 라우터 관련
0
104
1
react-beatiful-dnd에서 문제가 발생합니다.
0
104
1
react19에서는 react-beautiful-dnd가 설치되지 않습니다.
0
816
1
useEffect로 사용을 해도 되나요?
0
201
1
넷플릭스 오리지널 제외하고 슬라이드가 동작을 안합니다.
0
195
1
react 19의 useActionState가 더이상 isPending은 지원하지 않는 듯합니다
0
282
2
리액트 dockderfile 작성 시 COPY 질문
0
149
1
next.js에서부터는 react query 필요없는지
0
320
1
기능
0
197
1
오류가 안보여요
0
197
1
CSS
0
219
1
local storage
0
212
1
list컴포넌트 생성하기
0
224
1
검색어 입력 후 초기화하는 방법 궁금합니다!
0
333
1
Banner.css에 대해서
0
448
1
플러그인이 추천을 안해줍니다
0
323
1
마이너스버튼 테스트
0
279
2
리액트 서버 실행 오류
0
1157
2
오류메세지는 확인했는데 어떻게 고쳐야 할지 모르겠습니다 ㅠ
0
298
1
creactStore질문이요
1
285
2





