[英]Issue with constant re-rendering on React array
我正在开发一个React组件,它包含一个对象,格式如下:
{
data: [{item1}, {item2}, ..., {item10}],
filters: { ...filterOptions },
}
父组件render
功能基本上将data
映射到另一个名为ItemSelector
组件。 然后, ItemSelector
检查项类型并呈现特定Item
。
我实现了一个分页功能,它将使用一个新的数组更新data
键(通过一个新的数组,我的意思是我使用immutability-helper
和$set
操作更新reducer
属性)。 尽管Array是一个新对象, {item1}, {item2}, ..., {item10}
始终是相同的对象,但现在数组从{item1}
转到{item20}
。
我面临的问题是我无法避免重新渲染已经在Array上的项目,浪费了已经渲染的项目的计算。 我尝试为ItemSelector
设置一个唯一键,并从父组件中删除ItemSelector
并使用唯一键直接调用特定的Item
组件,但它没有解决问题。
有没有什么办法可以防止在已经渲染Item
组件时重新渲染它?
在某些情况下,您可以使用React.memo来解决此问题。
const Item = React.memo((props) => {
console.log(`${props.title} rendered`); // check browser console
return <li>{props.title}</li>;
});
但它在文件中说:
此方法仅作为性能优化存在。 不要依赖它来“防止”渲染,因为这会导致错误。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.