store.js 수정
middleware : [firstMiddleware]devTools: process.env.NODE_ENV !== "production",reducers/index.js
reducers/postSlice.js 수정
pending, fulfilled, rejected는 정해진 워딩이다.extraReducers: {
[logIn.pending](state, action) {
state.isLoggingIn = true;
},
[logIn.fullfilled](state, action) {
state.data = action.payload;
state.isLoggingIn = false;
},
[logIn.rejected](state, action) {
state.data = null;
state.isLoggingIn = false;
},
},
reducers/user.js 수정
action/user.js 수정
동기는 action을 따로 만들 필요가 없기에 action은 비동기의 공간이다.
createAsyncThunk import
액션 정의하기
액션이름, async(호출할 때 받는 데이터, thunkAPI);login thunk action만들기
const logIn = createAsyncThunk(
"user/login", async (
data, thunkAPI) => {
console.log(data);
const result = await delay(500, { userId: 1, nickname: "taehee", });
return result;
});
App.js 수정
dispatch(logIn())으로 CRUD한다.