我有一个很大的名单,让我们说3k会员。我有一个组件,用于呈现此列表以及每个列表项的组件。在外部组件中,我们有这样的代码:
const list = _.map(this.props.items, (item) => {
return <ListItem key={item.key} {...item} />
});
然后在我们的JSX中放置列表:
<div>
<h3>Check out my sweet list </h3>
{ list }
</div>
这里有一个问题:我想在用户点击已选择项目的项目时向用户显示。因此,在我的ListItem
组件中,我的代码基于单个项目是否具有selected
属性而突出显示。 当只有单个项目上的选定属性发生变化时,如何阻止React重新呈现整个列表?我确定我需要以某种方式重构我的代码,但我不是确定什么结构可以解决这个问题。很高兴回答任何问题,并提前致谢!
备注:
答案 0 :(得分:5)
好吧我明白了。在每个项目上成功实施shouldComponentUpdate
会带来巨大的性能提升。我没有这么做是因为一个简单的原因。
shouldComponentUpdate(nextProps) {
return !_.isEqual(nextProps, this.props);
}
然而......我在每个项目的声明中这样做:
onClick={this.handleItemClick.bind(this, item.key)}
这意味着this.props.onClick === nextProps.onClick
总是返回false,因此每个项目都会声明自己需要重新呈现。实施自定义检查后,它现在非常快!