gpt4 book ai didi

reactjs - 错误: An immer producer returned a new value *and* modified its draft.返回一个新值*或*修改草稿

转载 作者:行者123 更新时间:2023-12-03 13:43:26 25 4
gpt4 key购买 nike

因此,我是redux工具包的新手。

我有我的 reducer


const userAuthSlice = createSlice({
name: "userAuth",
initialState: {
token: '',
},
reducers: {
setToken: (state, action) => state.token = action.payload.test,
},
});


我有调度命令
<button
value={text.sign_in.submit}
onClick={() => dispatch(userAuthSlice.actions.setToken({test:"test"}))}

/>

当我按下按钮时,我得到的是这个错误:

enter image description here

我已隔离所有内容,以确保这是问题所在,仅此而已。

为什么会弹出此错误?

最佳答案

问题是使用没有花括号的箭头函数作为化简器,因为它充当隐式return语句。因此,您既要变异state.token,又要返回赋值的结果。
对于the Immer docs on returning data,有几种方法可以解决此问题:

  • 在分配
  • 的前面添加 void运算符
  • 用大括号括住分配,使其成为函数主体

  • 因此 setToken reducer可以用 void更新为
    setToken: (state, action) => void(state.token = action.payload.test)

    关于reactjs - 错误: An immer producer returned a new value *and* modified its draft.返回一个新值*或*修改草稿,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60806105/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com