Redux 에서 새로운 객체를 반환해야하는 이유 이전에 React 로 먼저 예시를 들어보겠다.
일반적으로 React 에서는 상태의 변화를 일으키고싶을땐 useState 의 setState 를 이용한다 . 직접 state를 조작하지 않는 이유는 무엇일까?
React 에서는 이전 state 와 바뀌는 state를 얕은비교하여 만약 둘의 상태가 똑같지않다면 리랜더링을 시킨다. 근데 만약 setState를 쓰지않거나 state를 직접 조작한다면 당연히 비교가 안되기때문에 리랜더링도 안되는것!
여기서 얕은비교란 객체,배열,함수 같은 참조 타입들을 실제 내부 값까지 비교하지않고 동일 참조인지 비교하는 것.
Redux도 마찬가지이다. 스토어에 저장되어있는 상태들을 직접 조작하게되면 비교가 안되기때문에 상태변화를 시킬수없을것이다. 그래서 새로운 객체로 반환하는것 .
근데 Redux-toolkit 에서는 새객체를 반환하는 문법도 필요없고 직접 조작이 가능하다. 그 이유는 리덕스 툴킷에서는 immer.js 라는 라이브러리가 알아서 상태변화를 감지해주기 때문이다!. 리덕스 툴킷 짱짱맨..
메모용으로 간단히 씀