Javascript 反应+;Redux不更新存储
我正在使用React和Redux制作电话列表,并且出现了问题。 需要注意的是:用户将其数据以模式形式放置,当他单击Submit按钮时,onClick函数触发并将数据发送到Redux存储,然后从存储区发送到localStorage,所有数据都将存储在该存储区 问题是:不是创建一个存储中包含数据的对象的数组,而是创建了一个空数组。下一次单击Submit按钮后-第一次单击时的数据将放置,而不是空数组。如此下去 在普通状态下也有同样的问题 守则: 应用程序: 适当行动:Javascript 反应+;Redux不更新存储,javascript,reactjs,redux,react-redux,Javascript,Reactjs,Redux,React Redux,我正在使用React和Redux制作电话列表,并且出现了问题。 需要注意的是:用户将其数据以模式形式放置,当他单击Submit按钮时,onClick函数触发并将数据发送到Redux存储,然后从存储区发送到localStorage,所有数据都将存储在该存储区 问题是:不是创建一个存储中包含数据的对象的数组,而是创建了一个空数组。下一次单击Submit按钮后-第一次单击时的数据将放置,而不是空数组。如此下去 在普通状态下也有同样的问题 守则: 应用程序: 适当行动: export function
export function setUser(user) {
return {
type: "SET_USER",
payload: user
};
}
如果您可以在WebpackBin或其他东西上提供一个工作示例,这将有助于更好地调试问题 根据我的经验,这通常发生在状态发生变异时。您能否尝试在减速机上使用以下格式:
state = {
state.set('users', [...state.users, action.payload])
};
现有功能在state=…
state = {
...state,
users: [...state.users, action.payload]
};
另外,在减速机的最后两个操作案例中,您缺少
break
语句。而您的默认值
案例决不能在React或Redux中直接改变状态。使用Redux时,您希望始终返回一个新对象以替换以前的状态
也许可以试试这样的
switch (action.type) {
case 'SET_INPUT':
return {
...state,
input: action.payload
};
case 'SET_USER':
return {
...state,
users: [...state.users, action.payload]
};
case 'SET_FORM_MODAL_STATUS':
return {
...state,
formModalStatus: action.payload
};
case 'SET_SUCCESS_MODAL_STATUS':
return {
...state,
successModalStatus: action.payload
};
default:
return state;
}
谢谢你的回答。当我尝试您的变量时,console@state.set中的-error不是一个函数。我已经尝试过许多不同的还原不可变回报,现在就像Jenna Rajani在这里写的那样。可能会尝试在Webpackbin上提供工作示例,但这需要时间。PS:我尝试只使用React-state,但使用React-setState()遇到了这个问题,然后在React+Redux中重写所有内容,问题消失。然后我不喜欢bootstrap模态,使用React模态,并面对最初的问题。
state = {
...state,
users: [...state.users, action.payload]
};
switch (action.type) {
case 'SET_INPUT':
return {
...state,
input: action.payload
};
case 'SET_USER':
return {
...state,
users: [...state.users, action.payload]
};
case 'SET_FORM_MODAL_STATUS':
return {
...state,
formModalStatus: action.payload
};
case 'SET_SUCCESS_MODAL_STATUS':
return {
...state,
successModalStatus: action.payload
};
default:
return state;
}