目前的做法是将整个书籍列表连接到书籍列表组件中。然而,通过仅更改状态中的几个字段来渲染大型组件并不是一种有效的方法。我不知道如何将每个书籍组件映射到各自的书籍状态。
该项目正在使用redux。应用程序全局状态如下:
{
"books": [
{
"field1": "field1",
"field2": "field2",
"field3": "field3",
} ...
]
}
在图书列表组件中,我们使用React Redux将列表与其连接。
export default connect(state => ({
books: state.books
}))(BookListComponent);
现在需求有所变化,书籍中的字段不会经常更改。问题是,如果修改一个字段,将会更新整个BookListComponent。这不是我期望的高性能组件。
我希望将连接逻辑下推到单个书籍组件中,以便使用reselect
状态中没有书籍的索引,我不知道如何编写连接以使其正常工作。
export default connect(state => ({
books[index]: state.books[index]
}))(BookListComponent);
感谢您提前的支持,欢迎提供所有选项。
key
属性呈现书籍列表,则无需过多担心。您的项目将被跟踪并相应地更新。然后,您还可以为Book
组件编写shouldComponentUpdate
函数,以告诉何时不应重新呈现书籍。 - just-boris