Javascript 从响应数据更新Redux状态
我的React应用程序有一个登录/注册系统 我想将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
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中获取数据。所谓的副作用(如获取数据)应该在外部
这是一个很好的框架