我有一个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;
1条答案
按热度按时间qyuhtwio1#
很可能是您的控制台上有一条错误消息,而您忽略了它。
在RTK Reducers(或任何一般的浸入式函数)中,您可以或者返回一个新值,或者修改
state
。同时执行这两项操作没有任何意义。因此,您可能希望跳过
return
语句并执行以下操作: