- Redux : a predictatble state container fo JS apps.(상태 관리 라이브러리)
- 그외: MobX, Recoil.js
항상 변하는 상태를 관리하기란 어렵습니다. 모델이 다른 모델을 업데이트하고, 그리고 뷰가 모델을 업데이트 할 수 있고, 이 뷰가 다시 다른 모델을 업데이트하고, 이에 따라 또 다른 뷰가 업데이트 됩니다. 어느 시점에서는 프로그래머조차 애플리케이션에서 무슨 일이 일어나는지 알 수 없게 됩니다. 상태를 언제, 왜, 어떻게 업데이트할지 제어할 수 없는 지경에 이르고 맙니다.
...
Redux는 상태 변화가 일어나는 시점에 제약을 두어, 상태 변화를 예측 가능하게 만들고자 시도한다.
<ChatMessages
messages={messages}
currentMember={member}
/>
let sum = (a,b) => a+b;
// 입력값을 바꾸지 않고 항상 동일한 입력값에 대해 동일한 결과를 반환하는 함수를 순수함수.
let withdraw = (account,amount) => account.total -= amount;
// 반면 위의 함수는 자신의 입력값을 변경하기 때문에 순수함수가 아니다.
state = {
message: '',
attachFile: undefined,
openMenu: false
};
{type: 'LIKE_ARTICLE', articleId: 42}
{type: 'FETCH_USER_SUCCESS', response: {id: 3, name:'Mary'}}
{type: 'ADD_TODO', text:'Read the Redux docs'}
ㄱ article의id 42번이 좋아요 라는 버튼을 눌렀다는 메시지
ㄴ id가 3번이고 이름이 mary인 유저정보를 가져오는 것을 성공했다는 메시지
ㄷ 이 text를 TODO 리스트에 추가했다라는 메시지
->Reducer: Action의 결과로 최종 state를 결정해서 리턴함.
```js
(previousState, action) => nextState