리덕스는 액션이 날라오면 리듀서가 스토어의 상태를 변경시키는 방식으로 동작한다.
보통 리덕스를 사용할 때는 모양새대로 action, actionCreator reducer 를 분리해서 작성한다.
ex) 액션은 액션끼리 액션생성함수는 생성함수끼리 리듀서는 리듀서끼리
하지만 덕스구조는 모양새대신에 기능으로 묶어서 작성한다.
ex) 같은 기능을가진 액션 액션생성함수 리듀서를 한파일에
//액션 타입을 정해준다.
const LOAD = "bucket/LOAD";
const CREATE = "bucket/CREATE";
//초기 상태값을 만들어줍니다.
const initialState = {
list: ["영화관 가기", "매일 책읽기", "수영 배우기"],
};
//액션 만들어줄 함수
export const loadBucket = (bucket) => {
return {type: LOAD, bucket };
};
export const createBucket = (bucket) => {
return { type: CREATE, bucket };
};
//configStore.js
import { createStore, combineReducers } from "redux";
import bucket from "./modules/bucket";
//root 리듀서 만들기
//리듀서를 여러개 만들면 여기에 하나씩 추가 해준다.
const rootReducer = combineReducers({ bucket});
//스토어를 만든다.
const store = createStore(rootReducer);
export default store;
리덕스 미들웨어를 사용하면 액션이 디스패치 된 다음, 리듀서에서 해당 액션을 받아와서 업데이트 하기 전에 추가적인 작업을 할 수 있다.
connected React Router란?
react-redux
useSelector
connect함수를 이용하지 않고 리덕스의 state를 조회할 수 있다.
리덕스 창시자인 댄 아브라모프가 만든 가장 많이 사용되는 비동기 작업 미들웨어. thnk를 사용하면 액션 객체가 아닌 함수를 디스패치 할 수 있다.
useDispatch, useSelector 훅을 이용해서 내가 사용하고자 하는 API 정보를 사용할 수 있다.