<aside> 📌 요약: 리액트 라우터 돔 Link 컴포넌트 또는 html의 a 태그는 정보를 가져올때만 써야 한다. 정보를 변경할때 사용하면 안된다.
Redux를 사용하는 이유는 1. Store를 통해 Props Drilling을 해결하고, unidirectional한 특징을 이용하여 디버깅하기 쉽고, 정해진 규칙대로 state를 관리 함으로써 다른 개발자와 협업하기 좋다는 것이다.
Redux에서 Store 안에 State, Reducer, Dispatch가 있다. 컴포넌트에서 State를 구독하려면 useSelector 함수를 사용하고, 그러면 셀렉한 state가 변경될때 useSelector 함수를 사용한 컴포넌트가 리렌더링 된다. 그 state를 변경하고 싶으면 컴포넌트에서 useDispatch를 사용하여 state를 변경 요청한다. 이때 파라미터로 Action값을 넘겨준다. 이 Action 값은 객체인데, 명세서다. 보통 type과 step으로 구성된다. Reducer는 Dispatch(State, Action)을 보고 해당 작업을 수행 후 state를 변경한다. 그럼 useSelector로 변경된 state를 구독한 컴포넌트가 리렌더링 되는 것이다.
action은 객체에 직접 써넣어도 되지만, 보통 action creator function을 만들어서 찍어낸다. 이러면 매개변수를 다르게 하기도 쉽다. 보통 step을 매개변수로 해서 바꾸면서 재사용한다.
redux-toolkit은 redux를 사용하기 위한 여러 라이브러리 통합 팩이다. sotre를 slice로 쪼개고 쪼개진 slice 안에서 name, initialState, reducers를 작성한다. reducers 에 메서드 즉 Action을 등록하면 해당 메서드의 형태를 보고 redux-toolkit이 자동으로 action creator를 만들어준다.
</aside>