redux RTK查询卡在“加载”状态

vecaoik1  于 2022-11-12  发布在  其他
关注(0)|答案(1)|浏览(177)

我有一个RTK查询,它在登录后从后端返回用户信息。我还创建了一个切片缩减器,用于获取RTK查询的有效负载(来自后端的登录调用)并存储用户信息,令牌处于(redux-toolkit)。在我使用ExtraReducers更新状态之前,一切都运行正常。如果我包含state.token= payload.token,则RTK查询会停留在“loading”状态,在删除线时,一切正常(我可以通过选择“用户”还原器来访问有效负载)。2我希望用户令牌被存储在用户切片中,这样我就可以在头中访问它,并将其发送回后端。3有人能解释为什么会发生这种情况吗?

import { createSlice } from "@reduxjs/toolkit";
import authService from "../Services/authService";

const initialState = {
  token: null,
};

const userSlice = createSlice({
  name: "user",
  initialState,
  reducers: {
    userLogin: (state, action) => {
    },
  },
  extraReducers: (builder) => {
    builder.addMatcher(
      authService.endpoints.authLogin.matchFulfilled,
      (state, { payload }) => {
        localStorage.setItem("userToken", payload.token);
        state.token = payload.token;
        return payload;
      }
    );
  },
});

export const { userLogin } = userSlice.actions;

export default userSlice.reducer;
qyuhtwio

qyuhtwio1#

很可能是您的控制台上有一条错误消息,而您忽略了它。
在RTK Reducers(或任何一般的浸入式函数)中,您可以或者返回一个新值,或者修改state。同时执行这两项操作没有任何意义。
因此,您可能希望跳过return语句并执行以下操作:

builder.addMatcher(
      authService.endpoints.authLogin.matchFulfilled,
      (state, { payload }) => {
        localStorage.setItem("userToken", payload.token);
        state.token = payload.token;
      }

相关问题