오늘 한 일
공부한거
redux는 기본적으로 flux 패턴을 따릅니다
flux 패턴이란 ? - 데이터 흐름이 단방향으로 전달되는 소프트웨어 개발에서 사용된다.
Flux 아키텍처의 가장 큰 특징으로는 '단방향 데이터 흐름(unidirectional data flow)'을 들 수 있다. 데이터의 흐름은 언제나 디스패처(Dispatcher)에서 스토어(Store)로, 스토어에서 뷰(View)로, 뷰에서 액션(Action)으로 다시 액션에서 디스패처로 흐른다.
Action -> Dispatch -> Store -> View
redux의 데이터 흐름은 동일하게 단방향으로 view(컴포넌트)에서 Dispatch(store에서 주는 state를 바꾸는 함수)라는 함수를 통해 action(디스 패치 함수 이름)이 발동되고 reducer에 정의된 로직에 따라 store의 state가 변화하고 그 state를 쓰는 view(컴포넌트)가 변하는 흐름을 따릅니다
Spring을 배울때, Singleton과 MVC 디자인패턴을 기본으로 다루고 사용했었다.
m- model , v- view, c- control
우리는 useState
를 사용 할 경우 컴포넌트 내부에 state를 만들고, 함수로 state를 바꿉니다.그렇기 때문에 state는 컴포넌트에 종속되는 것은 당연한 결과 입니다.redux는 컴포넌트에 종속되지 않고, 상태관리를 컴포넌트 바깥에서 합니다.프로젝트 루트레벨에서 store
라는 곳에 state를 저장하고, 모든 컴포넌트는 store에 구독
을 하면서 state
와 그 state를 바꾸는 함수
를 전달 받게 되죠. 함수를 바꿈으로 state가 바뀌면 해당 state를 바라보고 있는 컴포넌트는 모두 리렌더링 됩니다.
store
에 들어갈 state와 state를 바꿀 함수를 정의하는 곳입니다.state.test = action.test
와 같이 직접적으로 state를 변경하면 참조값이 변하지 않아 redux는 값이 바뀌었다고 인식하지 않고 리렌더링 되지 않습니다.state.test = {...test, action.test}
immer
라는 라이브러리를 사용하여 쉽게 불변성을 유지합니다.내일 할일