当我使用Vuex或Redux之类的助焊剂时。我有一个有关列表状态更新的问题。
我的列表数据处于流通状态。
// state.js
{
itemById: {},
}
我在列表组件中有项目的ID数组。
// listComponent.js
{
data: {
itemIds: [],
items: data.itemIds.map(id => state.itemById[id]),
};
}
现在,我在其他组件中添加一个项目。
// otherComponent.js
addItem(newItem) {
store.dispatch(newItem);
}
然后,itemById
状态具有newItem
,但是itemIds
没有newItem
的ID。
如果将itemIds
移至状态。当listComponent
销毁并重新创建时,itemIds
仍然存在,但我不希望这样做。
我该怎么做才能简单地更新itemIds
?
答案 0 :(得分:0)
您的代码有一个问题,就是您有两个相同数据的副本:一个处于状态,一个在data
的{{1}}中。假设listComponent
的数据是从状态的数据中初始化的,那么对于状态中的每个更新,您都需要捕获并更新本地组件的数据以使其匹配。销毁和重新创建组件不会直接更新本地数据,并且不建议仅为本地数据重新创建整个组件,因为它超过了组件生命周期的目的。
listComponent
和itemIds
从items
移到data
并直接使其脱离状态。
computed
答案 1 :(得分:0)
补充@blaz答案,如果您使用的是redux,则必须在listComponent.js
库中使用connect
函数。它将有可能从您的状态加载数据并将其作为props注入到组件中。
react-redux