我正在为我的应用程序使用带有 react 和 typescript 的 redux。我正在处理在我的应用程序的不同位置使用的许多项目。我的状态是这样的:
{
items: {42: {}, 53: {}, ... }, //A large dictionary of items
itemPage1: {
itemsId: [ 42, 34, 4 ],
...
},
itemPage2: { ...
},
...
}
用户可以修改items
调度某些动作的某些属性。发生这种情况时,我需要重新绘制每个页面中已修改的组件。问题是我的项目非常大,我无法在每次小的修改时重新绘制所有项目。我想知道这种方法是否有效:
- 我有一个
<ItemPage1>
连接到商店的拳头组件,以获取存储在树中的所有状态,itemPage1
例如项目列表 id:itemsId
。 - 在内部
<ItemPage1>
,我遍历该itemsId
属性以生成多个FilterItem
组件:itemsId.map( itemId => return <FilterItem id=itemId>);
最后,每个
Item
连接使用ownProps
以获取状态的正确部分:const mapStateToItemProps = (state, ownProps) => { return { item: state.items[ownProps.id], } } const mapDispatchToItemProps = (dispatch, ownProps) => { return null; } const FilterItem = connect( mapStateToItemProps, mapDispatchToItemProps )(Item)
您能否确认或反驳,如果我更新 id 42 的项目,那么只会重新渲染该项目?