redux는 자유롭게 확장하여 사용할 수 있음.
각 action이 store를 어떻게 업데이트할지를 기술하는 순수함수이다. store와 정보를 주고 받는 역할을 한다. 업데이트 방식은 sotre의 state를 변형(mutate)하는 것이 아닌 "이전 state와 action을 참고하여 새 state를 만들어서 반환하는 방식" 이다.
-> 항상 state와 action을 받아서 state를 return 해주어야한다.
let newState
...
return newState
내부적으로 action과 데이터가 어떻게 흐르는지 이해하고,
middleware, enhancer 등을 이용하여 redux를 확장함.
실무에선 리덕스 미들웨어를 직접 만드는 일은 거의 없다고 한다.
// 여기서 middleware, logger 등이 왜 필요한 지 아직 잘 모르겠음 .. @-@ 공부 더 해야됨 ;;;;;;;;;
action은 dispatch 이후 모든 middleware를 먼저 통과한 후에 reducer에 도달
event -> action -> (store.dispatch) -> middleware(1) -> next -> middleware(2) -> next -> reducer -> store
(작성중)