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 в отклоненном случае, а не в заполненном случае.

Вернуться на верх