【发布时间】:2017-11-22 12:25:10
【问题描述】:
所以我相信我现在了解了 react-redux 的流程。但是,有些事情让我感到困惑。
现在我有一个正在使用的 reducer 更新状态,动作是“ADD_ITEM”。这工作正常。但我希望这些数据能够持续存在。所以我也将该项目存储到我的数据库中。当页面刷新并重置状态时,我从服务器获取包含所有项目的列表并动态调度“ADD_ITEM”操作。这也可以正常工作,但我不确定这是否是正确的方法。
当我将 state 连接到组件中的 props 时,真正的问题出现了。在 componentwillmount() 中,我调用 populateItems() 调度程序,它将项目动态添加到状态中。但是,项目列表的道具似乎一次一个出现,因此我不能真正一次显示所有项目,而是必须不断更新,随着道具的到来不断更新列表。
对不起,我对 react 和 redux 都很陌生,但这个问题是我绝对需要帮助的。如果您需要澄清或编码 sn-ps,我很乐意分享。
编辑:这里有一些代码 sn-ps
let itemID = 0;
export function populateList(id) {
return (dispatch) => {
return axios.get(`/api/item/getItems?ID=${id}`).then((res) => {
console.log("Response:", res);
res.data.map((data) => {
dispatch(addToItemList(data));
})
})
}
}
export function addToItemList(data) {
console.log(data);
return {
type: ADD_ITEM,
id: itemID++,
itemName: data.name,
itemDescription: data.description
}
}
export function addItem(data) {
return (dispatch) => {
return axios.post('/api/item/add', data).then(res => {
dispatch(addToItemList(data));
})
}
}
reducer 只是添加预先存在的列表。 如果我要更改操作以批量添加数据库中的整个列表,我必须以不同于手动添加一项的方式解析该列表。
【问题讨论】:
-
您可以使用一次设置所有项目的操作
-
如果可以的话,把你所有的相关代码放在这里,这样更容易帮助你。
-
请包含代码
标签: reactjs redux react-redux