Redux는 자바스크립트 앱을 위한 예측 가능한 상태 컨테이너입니다.
$ npm install @reduxjs/toolkit
$ yarn add @reduxjs/toolkit
$ npx create-react-app my-app --template redux
$ npm install redux
$ yarn add redux
import { createStore } from 'redux';
function counter(state = 0, action) {
switch (action.type) {
case 'INCREMENT':
return state + 1
case 'DECREMENT':
return state - 1
default:
return state
}
}
// Redux 저장소
let store = createStore(counter);
store.subscribe(() => console.log(store.getState()))
store.dispatch({ type: 'INCREMENT' }) // 1
store.dispatch({ type: 'INCREMENT' }) // 2
store.dispatch({ type: 'DECREMENT' }) // 1
counter
함수counter
함수를 리듀서 함수(Reducer Function)라고 합니다.state
와 action
을 받습니다.state
는 초기값으로 0을 가지고 있고, 리듀서 함수에서 해당 값을 업데이트 합니다.action
은 상태 트리를 변경하기 위해 무엇이 일어날지 서술하는 객체입니다.store
변수store
변수는 Redux 저장소입니다.subscribe
, dispatch
, getState
가 있습니다.subscribe()
subscribe()
를 이용하면 상태 변화에 따라 UI를 변경할 수 있습니다.subscribe()
를 직접 사용하기 보다는 뷰 바인딩 라이브러리를 사용합니다.dispatch()
dispatch()
로 액션을 내보내 상태를 변경할 수 있습니다.- 앱의 많은 곳에서 많은 양의 상태가 필요할 때
- 앱의 상태가 자주 업데이트될 때
- 상태를 업데이트하는 로직이 복잡할 때
- 앱의 코드 양의 많고, 많은 사람들과 일할 때
- 시간이 지남에 따라 상태가 어떻게 변화하는 지 보고 싶을 때
출처
🔗 공식 문서: https://ko.redux.js.org/introduction/getting-started
🔗 Github: https://github.com/chaevivin/Front-end_study/blob/main/Redux/Start_Redux.md
더 자세하게 정리되어 있고, 번역된 문서를 보고싶다면 Github에서 제가 작성한 문서를 확인하세요.