Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从响应数据更新Redux状态_Javascript_Node.js_Reactjs_Web_Redux - Fatal编程技术网

Javascript 从响应数据更新Redux状态

Javascript 从响应数据更新Redux状态,javascript,node.js,reactjs,web,redux,Javascript,Node.js,Reactjs,Web,Redux,我的React应用程序有一个登录/注册系统 我想将user状态设置为fetch之后收到的响应。代码如下所示- export const userSlice = createSlice({ name: "user", initialState: { user: null, }, reducers: { login: (state, action) => { fetch("http://localhost:5000/us

我的React应用程序有一个登录/注册系统

我想将
user
状态设置为
fetch
之后收到的响应。代码如下所示-

export const userSlice = createSlice({
  name: "user",
  initialState: {
    user: null,
  },
  reducers: {
    login: (state, action) => {
      fetch("http://localhost:5000/user/login", {
        method: "POST",
        headers: { "Content-Type": "application/json" },
        body: JSON.stringify(action.payload),
      })
        .then((res) => {
          return res.json();
        })
        .then((data) => {
          console.log(data);
          state.user = data;
        });
    },
  },
});
一切正常,直到我添加行
state.user=data
,之后我得到一个错误-

未处理的拒绝(TypeError):无法对已撤销的代理执行“设置”

我做错了什么


提前感谢。

不允许您直接更改状态。reducer是一个函数
(state,action)=>newState
,您必须在不改变旧状态的情况下返回新状态

例如:
return{…state,user:data}

但有一个替代方案,您可以查看:,它允许您更改克隆状态草稿

但这里的另一个问题是,您不应该在reducer中获取数据。所谓的副作用(如获取数据)应该在外部

这是一个很好的框架