将数据连接到组件时从 redux 修改数据
Modifying data from redux when connecting it to component
redux连接component修改数据是否正常?像这样
redux
const itemInitialState = {
id: null,
name: ''
};
反应
const Component = connect(
state => ({
items: state.items.map(item => {
item.selected = true;
return item;
})
})
)(_Component);
我添加了一把原来不在状态的钥匙
如果这是您的意思,它应该不会对性能有任何影响。但是,我建议您将代码移到组件中。 mapStateToProps
应该执行将数据从状态映射到特定组件的道具的唯一功能。通过 props 传入的数据的修改应该留给组件。
我认为在执行 mapStateToProps
时添加字段很好 - 尽管通过更仔细地考虑数据模型可能会解决这样做的需要。
关于您的代码示例,我要解决的问题是不要改变实际的 redux 状态,这可能会导致严重的错误。所以我将其修复为不可变的:
const Component = connect(
state => ({
items: state.items.map(item => ({
...item,
selected: true
}))
})
)(_Component);
数组的映射函数总是return一个新的引用。我们不应该 return 来自 connect 函数的新引用,因为它会绕过 shouldComponentUpdate Connect 组件 return 在 connect 函数内部处理。每当任何会随着应用程序增长而导致性能影响的操作分派时,都不必总是调用此组件的渲染函数。
新引用必须始终来自 reducer。
所以,在你的组件中设置任何新的 属性 它或者在 reducer 中设置它。
redux连接component修改数据是否正常?像这样
redux
const itemInitialState = {
id: null,
name: ''
};
反应
const Component = connect(
state => ({
items: state.items.map(item => {
item.selected = true;
return item;
})
})
)(_Component);
我添加了一把原来不在状态的钥匙
如果这是您的意思,它应该不会对性能有任何影响。但是,我建议您将代码移到组件中。 mapStateToProps
应该执行将数据从状态映射到特定组件的道具的唯一功能。通过 props 传入的数据的修改应该留给组件。
我认为在执行 mapStateToProps
时添加字段很好 - 尽管通过更仔细地考虑数据模型可能会解决这样做的需要。
关于您的代码示例,我要解决的问题是不要改变实际的 redux 状态,这可能会导致严重的错误。所以我将其修复为不可变的:
const Component = connect(
state => ({
items: state.items.map(item => ({
...item,
selected: true
}))
})
)(_Component);
数组的映射函数总是return一个新的引用。我们不应该 return 来自 connect 函数的新引用,因为它会绕过 shouldComponentUpdate Connect 组件 return 在 connect 函数内部处理。每当任何会随着应用程序增长而导致性能影响的操作分派时,都不必总是调用此组件的渲染函数。
新引用必须始终来自 reducer。
所以,在你的组件中设置任何新的 属性 它或者在 reducer 中设置它。