Redux는 자바스크립트 앱을 위한 예측 가능한 상태 컨테이너입니다.
$ npm install @reduxjs/toolkit$ yarn add @reduxjs/toolkit$ npx create-react-app my-app --template redux$ npm install redux$ yarn add reduximport { 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에서 제가 작성한 문서를 확인하세요.