프론트 마지막 세션
데이터의 흐름이 복잡하기 때문에 데이터의 흐름을 제약할 필요가 생겼습니다.
그래서 상태 변화가 일어나는 시점과 형태에 제약을 두어서 상태 변화를 예측 가능하게 만들고자 시도을 한 것입니다.
단방향 데이터 바인딩을 하는 Flux패턴의 자바스크립트 구현체 입니다.
1) View
에서 유저가 일으키는 행동에 맞게 Action
객체가 생성되고,
2) Action은 Dispatcher
를 통해 Reducer
로 전달되고,
3) Action의 type에 따라 Reducer 내에 미리 정해져 있던 로직이 Store
를 변경하고,
4) 변경된 Store의 내용이 View
로 반영되는 패턴이라고 요약할 수 있음.
기본 React의 기능만으로 대응하기 힘들 정도로 애플리케이션의 상태 관리가 복잡해졌다고 판단이 되었을 때. 진정한 필요성을 느꼈을 때만 쓰는 것이 좋습니다.
1) 진실은 하나의 소스로부터
2) 상태는 읽기 전용이다.
dispatch
를 호출하는 것 (마치 setState
)뒤로 감기만 하면 된다. 시간여행이 가능하다.
3) 변화는 순수 함수로 작성되어야한다.
fetch
(순수하지 않다. 언제 바뀔지도 모르니까) 등의 비동기 로직, new Date()
, Math.random()
은 같은 input에 다른 return ⇒ 유닛 테스트 불가1) 전역 상태 관리
2) props drilling
3) 편하려고
Provider
useSelector
(state)useDispatch
(setState)