使用React突出显示列表中的项目时的性能
Performance when highlighting item in list with React
我有一个很大的列表,假设有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重新呈现整个列表,当只有一个项目的选定属性改变?我确信我需要以某种方式重组我的代码,但我不确定什么结构将解决这个问题。很高兴回答任何和所有的问题,并提前感谢!
指出:
- 我不是说在一个列表中渲染3k个项目是好的,只是相信这应该是,原则上,可能的反应。
- 列表并没有在实际的dom上被重新渲染,但是虚拟dom正在做比较所有内容的工作,这需要很多时间。
好吧,我明白了。成功地在每个单独的项目上实施shouldComponentUpdate
会带来巨大的性能提升。我没有做到这一点,原因很简单。
shouldComponentUpdate(nextProps) {
return !_.isEqual(nextProps, this.props);
}
然而…我在每一项的声明中都是这样做的:
onClick={this.handleItemClick.bind(this, item.key)}
这意味着this.props.onClick === nextProps.onClick
将始终返回false,因此每个单独的项目将始终声明自己需要重新呈现。在实现自定义检查之后,它现在非常快!
相关文章:
- 正在将数据主题添加到所有项目
- 函数参数中的数据与指定变量之间的任何性能差异
- 提高JQuery的性能
- 动态地改变“”的URL;添加新项目”;链接使用javascript/jquery
- 如何检查管道中未定义的项目
- 有没有一种方法可以添加相同的项目val=“0”;4〃;到JavaScript中数组的每个对象
- 学生搜索项目jquery/javascript
- 如何获取不属于我项目的上一页的URL
- 使用正则表达式评估电子邮件地址时出现性能问题
- Dojo:访问dijit.form.Select中单击的项目
- 角度的项目列表 ng 重复,ng 单击显示全宽描述
- React:按键的性能提升
- 我需要为我的朋友在这个项目上提供帮助
- 如何从 HTML 查询中删除项目
- 在Three.js中导出网格会提高性能吗
- 在Meteor项目中安装并包含npm模块后出错
- 在javascript中搜索项目列表的性能
- 使用React突出显示列表中的项目时的性能
- 添加项目子列表到项目定价子列表-提高性能
- 谁能推荐一个性能良好的界面,允许用户在HTML中组织大量的项目?