해결된 질문
작성
·
211
답변 1
0
안녕하세요, Boom님,
photos 데이터 가공에 따른 PhotoList 컴포넌트의 렌더링 타이밍에 대해서 질문을 주셨는데요,
처음에 말씀해주신 "PhotoList 입장에서는 프롭이 변경된것이라고 판단 되어서 리렌더링이 될 것이라고 생각했는데" 이 내용이 맞습니다.
다만, useSelector 는 redux state가 변화가 있으면 명시된 값(photos, loading)에 대해서 이전 상태와 새로 변경된 redux state에서의 상태를 비교합니다.
이 때, 실제 구독하는 데이터는 변경되지 않았지만, 리렌더링이 됐던 이유는 filter 함수로 인해 새로운 photos 객체가 만들어져서 데이터가 변경되었다고 판단하기 때문입니다.
그래서 filter 로직을 밖으로 뺌으로써 category, photos.data, loading 상태 외의 다른 상태 변화로 부터 영향을 받지 않도록 한 겁니다.
자세한 내용은 10:56 부분을 참고하시면 좋을 것 같습니다.
그럼 답변이 도움되셨길 바라며, 강의에 관심을 가져주셔서 감사합니다. :)