Redux toolkit полностью заполнен, даже если есть ошибка, а сообщение об ошибке из django отображается в заполненном случае
Выполнено и обновляет состояние отлично. Но при использовании неправильных учетных данных в заполненном состоянии "userInfo" появляется подробная ошибка от django. Если перехватить ошибку через rejectWithValue, то сообщение будет просто "code 401"
userSlice.js
import { createSlice, createAsyncThunk } from "@reduxjs/toolkit";
import axios from "axios";
export const login = createAsyncThunk(
"USER_LOGIN_REQUEST",
async (cred, thunkAPI) => {
try {
console.log("this is one thig");
console.log("username: ", cred.username, "password: ", cred.password);
const config = {
headers: {
"Content-type": "application/json",
},
};
const { data } = await axios.post(
"/api/users/login/",
{ username: cred.username, password: cred.password },
config
);
localStorage.setItem("userInfo", JSON.stringify(data));
return data;
} catch (error) {
return thunkAPI.rejectWithValue(error);
}
}
);
const userInfoFromStorage = localStorage.getItem("userInfo")
? JSON.parse(localStorage.getItem("userInfo"))
: null;
const initialState = {
userLogin: { userInfo: userInfoFromStorage },
};
const userSlice = createSlice({
name: "userRegister",
initialState,
reducers: {},
extraReducers: (builder) => {
builder
.addCase(login.pending, (state = {}, action) => {
return { loading: true, userInfo: [] };
})
.addCase(login.fulfilled, (state = {}, action) => {
return { loading: false, userInfo: action.payload };
})
.addCase(login.rejected, (state = {}, action) => {
return { loading: false, error: action.payload.message };
});
},
});
export default userSlice.reducer;
store.js
const store = configureStore({
reducer: {
userLogin: userLoginReducer,
cart: cartReducer,
productList: productListReducer,
productDetails: productDetailsReducer,
},
// initialState,
middleware,
});
login.jsx
const { error, loading, userInfo } = userLogin;
const submitHandler = (e) => {
e.preventDefault();
dispatch(login({ username: email, password }));
};
Я ожидал сообщения об ошибке от django в отклоненном случае, а не в заполненном случае.