리덕스를 사용해 전역으로 값을 관리하며 최적화를 진행했다.
1. reselect 라이브러리를 사용하여 selector로 관리하는 값 memoization
2. react-redux에서 제공하는 shallowEuqal 함수를 사용해 렌더링 최소화
shallowEqual 함수는 객체의 가장 겉에 값들을 모두 비교하는데,
const object = {
a: {
x: 3,
y: 2,
z: 1
},
b: 1,
c: [{ id: 1 }]
}
위 객체가 있다면 object.a, object.b, object.c만 비교하고 object.a.x 처럼 한뎁스 더 들어가는 값들은 비교하지 않는다.
shallowEqual 말고 useSelector로 가져온 값을 객체 형식이 아닌 독립적으로 선언해줘도 된다.
// shallowEqual 사용
const { editable, diposeGroups } = useSelector(
(state: RootState) => ({
editable: state.editable,
diposeGroups: state.diposeInfo,
}),
shallowEqual
);
// 독립적으로 선언
const { editable } = useSelector((state: RootState) => state.editable);
const diposeInfo = useSelector((state: RootState) => state.diposeInfo);
'Web > React' 카테고리의 다른 글
[React] useState 배열, 객체 수정 (0) | 2023.02.19 |
---|---|
[React] lazy import (0) | 2023.01.16 |
[React] React-Query (0) | 2023.01.12 |
[React] 이미지 에러 시 대체 이미지 설정 (0) | 2023.01.02 |
[React] styled-components props (0) | 2023.01.02 |