<aside> 📌 요약: Redux는 앱 전체 상태를 쉽게 관리하기 위한 라이브러리로, Flux pattern에서 차용되었다. 앱 전체 상태관리, 복잡한 비동기처리가 있는 상태관리, 앱의 상태가 복잡할때, 상태관리 패턴을 도입하여 여러 개발자와 협업할때, logger devtool 등을 활용하여 상태관리를 하고싶을때 등 사용한다.
Single source of truth - Store는 단 하나이며, 모든 앱의 상태는 이곳에 보관된다. Immutability - 상태는 오로지 읽을 수만 있고 변경하려면 모든 상태가 변경된다. Pure function - 상태의 변경은 어떠한 사이드 이펙트도 만들지 않아야 한다.
Action은 상태의 변경을 나타내는 객체로 보통 type, payload를 포함한다.
Store는 앱 전체의 상태를 보관하는 곳이다.
Reducer는 Action을 받아서 case에 따라 로직을 처리한다.
Dispatch는 Action을 redux로 보내는 함수다. dispatch 후에 action은 middleware를 거쳐 reducer에 도달한다. unidirectional 하다.
Selector는 특정 state 조각을 store로부터 가져오는 함수다.
redux-toolkit은 redux에서 공식적으로 추천하는 helper 라이브러리다. 다양한 라이브러리가 포함되어있다.
react-redux API로 react와 redux를 연결한다.
redux 비동기 처리를 위해서는 비동기를 위한 middleware를 추가해야 한다.
</aside>