728x90
React x Mobx
- 참고할 저장소 코드: https://github.com/goodsosbva/react_redux/tree/main/redux-mobx
1. 리덕스 x 리액트 응용 방법
리덕스의 기본 원리는 다음과 같습니다:
state -> dispatch
: 적절한 dispatch 명령을 Action 함수에 받아들입니다.- Reducer에서 해당 액션을 수용하여
state
를 변경합니다 (prevState -> changedState
).
생성 흐름은 다음과 같습니다:
createStore
: 스토어를 생성합니다.- Reducer 생성: 상태 변경을 수행하는 리듀서를 생성합니다.
- 초기 state 설정: 스토어의 초기 상태를 설정합니다.
state
생성: 리듀서와 초기 상태를 사용하여 상태를 생성합니다.- 액션 생성자 생성 (필수는 아닙니다): 필요한 경우 액션 생성자 함수를 생성합니다.
dispatch
: 액션을 디스패치하여 상태 변경을 요청합니다.- 리듀서가 인식하여
state
변경: 디스패치된 액션을 리듀서가 인식하고 상태를 변경합니다.
2. 리덕스 편의성 제공 - 1 (immer)
리덕스에서 편의성을 제공하기 위해 immer
라는 라이브러리를 사용할 수 있습니다. immer
를 사용하면 간단한 골격으로 다음과 같이 상태를 변경할 수 있습니다:
nextState = produce(prevState, (draft) => {
// [기본 리듀서 위치]
});
이를 활용하면 불변성을 지키면서도 더 간편하게 상태를 변경할 수 있습니다.
3. 리덕스 편의성 제공 - 2 (redux-toolkit)
redux-toolkit
은 리덕스의 편의성을 높여주는 패키지입니다. redux-toolkit
에서 주요한 메서드는 다음과 같습니다:
- 스토어 설정:
configureStore
,getDefaultMiddleware
,immutabilityMiddleware
,serializabilityMiddleware
- 리듀서와 액션 생성자:
createSlice
,createAsyncThunk
2. Mobx의 기본 원리
Mobx는 상태를 관리하는 방식이 리덕스와 다릅니다:
state -> action
: 상태를 직접 변경할 수 있으며, 리덕스와 큰 차이점입니다.- 예시:
state.id = 'goodsosbva'
와 같이 직접 객체의 속성을 변경한 다음,observable
로 객체를 감싸면 Mobx가 옵저버가 상태를 관리합니다.
주요한 메서드로는 Observable
, reaction
, action
, autorun
, reaction
등이 있습니다.
2-1. Mobx vs Redux 차이점
리덕스는 불변성을 지키는 것이 원칙이며, 상태를 변경할 때 얕은 복사를 통해 새로운 상태를 생성하여 변화된 값을 치환합니다. 반면에 Mobx는 리덕스처럼 엄격하게 불변성을 지키지 않습니다. 그렇기 때문에 Mobx에서는 액션을 만들 필요 없이 observable
로 감싼 객체를 직접 변경하여 전역 상태를 관리할 수 있습니다. 이로 인해 코드 작성이 간편해집니다.
728x90
'React 실습' 카테고리의 다른 글
[React] jsx 문법 요령 - map을 이용하여 여러개의 태그 출력 (0) | 2023.06.08 |
---|---|
[Githib Action]CI / CD 자동 배포 정리 (질 & 답 형식) (0) | 2023.05.12 |
리액트 커스텀 훅 만들기 (0) | 2022.11.22 |
오늘의 술 프로젝트 - 작업 정리(1) [페이지네이션, 검색] 구현 (1) | 2022.11.04 |
yoga 프로젝트 작업일지 - 5 (0) | 2022.10.27 |