目前的方法是将整本书列表连接到Book List Component.但是,通过仅更改状态中的多个字段来渲染大型组件并不高效.我不知道如何映射每个书籍组件连接到每个单独的书籍状态.
该项目正在使用redux.像这样的应用程序全局状态
{
"books": [
{
"field1": "field1",
"field2": "field2",
"field3": "field3",
} ...
]
}
在Book List组件中,我们使用react redux连接列表
export default connect(state => ({
books: state.books
}))(BookListComponent);
现在需求发生变化,书中的字段不会经常更改.问题是,如果更改了一个字段,它将更新整个BookListComponent.这不是我期待的高性能组件.
我想将连接逻辑推送到单个Book Component以便使用reselect
国家没有书的索引,我不知道如何写连接使其工作
export default connect(state => ({
books[index]: state.books[index]
}))(BookListComponent);
感谢您的预付款,欢迎所有选择
最佳答案 你的第二个例子几乎是正确的.可以声明mapState函数采用两个参数而不是一个参数.如果声明了两个参数,Redux将使用赋予包装器组件的props调用该mapState函数.因此,列表项的mapState函数将是:
const mapState = (state, ownProps) => {
const book = state.books[ownProps.index];
return {book}
}
我的博客文章Practical Redux, Part 6: Connected Lists, Forms, and Performance显示了如何执行此操作的一些示例,还讨论了Redux中应用程序性能的关键注意事项.