【发布时间】:2021-06-22 16:56:25
【问题描述】:
今天我遇到了一个错误,当我的 redux 状态发生变化时,我使用 useSelector 的组件不会重新渲染。快速阅读createSlice 文档后,我注意到他们返回了state.something = action.payload,而我没有这样做。
所以在这段代码中:
const personSlice = createSlice({
name: "person",
initialState,
reducers: {
setToken: (state, action) => {
state.token = action.payload;
},
setUser: (state, action) => {
state = { ...state, ...action.payload };
},
},
});
当我设置令牌时,我的应用程序会更新并且运行良好。但是在调度 setUser 操作之后,我依赖于 person 状态的组件没有得到重新渲染。但是为什么我设置令牌而不返回时它会起作用呢?
我将代码更改为:
const personSlice = createSlice({
name: "person",
initialState,
reducers: {
setToken: (state, action) => {
state.token = action.payload;
},
setUser: (state, action) => {
return state = { ...state, ...action.payload };
},
},
});
即使没有setToken 中的return,一切正常。
所以我想我的最终问题是,切片中究竟发生了什么,为什么以及我需要从操作中返回什么?
【问题讨论】:
标签: reactjs redux redux-toolkit