팀 프로젝트와 사이드 프로젝트에서 리덕스를 사용한 경험은 있었다. 회사에서 리덕스 툴킷을 사용중이어서 공부하게 되었다..!
리덕스 툴킷 어렵지만 리덕스를 알아야 쓸 수 있는 확장판 개념이다.
리덕스 툴킷에서는 리덕스와 다른 7가지가 있다.
configureStore 함수는 reducer, middleware, devTools, preloadedState, enchancer를 전달한다.
소프트웨어 공학에서 미들웨어란 운영 체제와 응용 소프트웨어 중간에서 조정과 중개의 역할을 수행하는 소프트웨어로 정의된다.
리덕스 미들웨어는 dispatch된 액션이 리듀서에 도달하기 전 중간에서 역할을 수행한다.
import { createAsyncThunk, createSlice } from '@reduxjs/toolkit'
import { userAPI } from './userAPI'
const fetchUserById = createAsyncThunk(
'users/fetchByIdStatus',
async (userId, thunkAPI) => {
const response = await userAPI.fetchById(userId)
return response.data
}
)
즉, promise 결과에 따라 로직 실행을 정할 수 있다.
const usersSlice = createSlice({
name: 'users',
initialState: { entities: [], loading: 'idle' },
extraReducers: (builder) => {
builder
.addCase(fetchUserById.pending, (state) => {})
.addCase(fetchUserById.fulfilled, (state, action) => {
state.entities.push(action.payload)
})
.addCase(fetchUserById.rejected, (state) => {})
},
})