Reactjs 键在react redux应用程序中的作用和管理动态组件的状态
我基本上理解键的用途:我们需要能够识别孩子列表中的变化 我遇到的问题是信息流,以及在我的存储中的状态和子组件的状态之间保持同步 例如,假设我有一个Reactjs 键在react redux应用程序中的作用和管理动态组件的状态,reactjs,redux,Reactjs,Redux,我基本上理解键的用途:我们需要能够识别孩子列表中的变化 我遇到的问题是信息流,以及在我的存储中的状态和子组件的状态之间保持同步 例如,假设我有一个列表,它听起来就是这样的。某个容器中包含文本输入。其中许多存储在一些元素中 列表中的CustomTextInputs的数量可以更改,可以添加和减少。我有一个带有递增计数器的工厂,每当插入CustomTextInput时,不管它放在哪里,它都会发出新的键 我有一个CustomTextInputModel类型,它填充了我的商店。每当我更改其中一个输入中的值
列表,它听起来就是这样的。某个容器中包含文本输入。其中许多存储在一些
元素中
列表中的CustomTextInput
s的数量可以更改,可以添加和减少。我有一个带有递增计数器的工厂,每当插入CustomTextInput时,不管它放在哪里,它都会发出新的键
我有一个CustomTextInputModel
类型,它填充了我的商店。每当我更改其中一个输入中的值时,它都需要调用一个回调来在我的存储中分派操作。但是,我如何知道要修改哪一个实例,以及如何确保整个列表不会因更改单个实例而重新启动,因为整个存储的状态正在重新创建?是否需要在每个CustomTextInput
中存储对某个型号ID的引用?这应该是关键吗
许多银行,我在这方面很新:)
但是,我如何知道要修改哪一个,以及如何确保整个列表不会因为更改单个实例而重新呈现,因为整个存储的状态正在重新创建
如果组件绑定到redux存储中的对象列表,那么它将重新呈现整个列表,因为父级将获得新的道具。但是,有几种方法可以避免重新渲染
请注意,这是一篇相当高级的文章,但希望能有所帮助。我发现,在解释一种使react-redux应用程序在呈现大型列表时更高效的方法时非常有用,方法是将每个项连接到redux存储,并通过一个通过道具传入的id来监听自己
下面是另一篇很好的文章,说明了这一点:
减速器内部:
function items(state = {}, action) {
switch (action.type) {
case 'MARK':
const item = state[action.id];
return {
...state,
[action.id]: {...item, marked: !item.marked}
};
default: return state;
}
}
function ids(state = [], action) {
return state;
}
在列表容器中:
<div>
{
ids.map(id => {
return <Item key={id} id={id} />;
})
}
</div>
// Returns an array of just ids, not whole objects
function mapStateToProps(state) {
return {id: state.ids};
}
我是否需要在每个CustomTextInput中存储对某个模型ID的引用
是的,当您想要修改特定项时,您需要某种类型的密钥/id来传递给redux操作
这应该是关键吗
在redux存储中引用中的内容最常见的方法是通过id
但是,我如何知道要修改哪一个,以及如何确保整个列表不会因为更改单个实例而重新呈现,因为整个存储的状态正在重新创建
如果组件绑定到redux存储中的对象列表,那么它将重新呈现整个列表,因为父级将获得新的道具。但是,有几种方法可以避免重新渲染
请注意,这是一篇相当高级的文章,但希望能有所帮助。我发现,在解释一种使react-redux应用程序在呈现大型列表时更高效的方法时非常有用,方法是将每个项连接到redux存储,并通过一个通过道具传入的id来监听自己
下面是另一篇很好的文章,说明了这一点:
减速器内部:
function items(state = {}, action) {
switch (action.type) {
case 'MARK':
const item = state[action.id];
return {
...state,
[action.id]: {...item, marked: !item.marked}
};
default: return state;
}
}
function ids(state = [], action) {
return state;
}
在列表容器中:
<div>
{
ids.map(id => {
return <Item key={id} id={id} />;
})
}
</div>
// Returns an array of just ids, not whole objects
function mapStateToProps(state) {
return {id: state.ids};
}
我是否需要在每个CustomTextInput中存储对某个模型ID的引用
是的,当您想要修改特定项时,您需要某种类型的密钥/id来传递给redux操作
这应该是关键吗
在redux存储中引用中的内容最常见的方法是通过id