리액트 생태계에서 가장 사용률이 높은 상태관리 라이브러리
미들웨이 기능(주로 비동기 작업을 처리할 때 많이 사용)
{
type:
}
export function addTodo(data){
return {
type: "ADD_TODO",
data
};
}
function reducer(state, action){
// 상태 업데이트 로직
return alteredState;
}
dispatch(action)
호출하면 스토어는 리듀서함수를 실행시켜서 해당 액션을 처리하는 로직이 있다면 액션을 참고하여 새로운 상태를 만들어준다.
$ npx create-react-app learn-redux
$ cd learn-redux
$ yarn add redux
$ code .
import { createStore } from 'redux';
: 스토어를 만들어주는 함수, 리액트 프로젝트에서는 단 하나의 스토어를 만든다.
리덕스에서 관리할 상태 정의
const initialState={
counter:0,
text: '',
list: []
};
액션타입 정의
액션타입은 주로 대문자로 작성
const INCREASE = 'INCREASE';
액션 생성 함수 정의
function increase(){
return{
type: INCREASE
};
}
리듀서 만들기
function reducer(store=initialState, action){
switch(action.type){
case INCREASE :
return{
...state,
counter: state.counter+1
};
스토어 만들기
const store = createStore(reducer);
스토어 안에 들어있는 상태가 바뀔 때마다 호출되는 listener 함수 만들기
const listener=()=>{
const state=store.getState();
console.log(state);
};
액션 디스패치 하기
store.dispatch(increase());