我现在使用React
+ Apollo
。
我通过update
中的immutability-helper
更新列表。
当我将某些项目推入列表时,发现每个项目(扩展PureComponent并具有键)都重新渲染。
//列表
list.map(edge => (
<div key={edge.node.id} className="xxxx">
<Item {...edge.node} />
</div>
))
//项目
class Item extends React.PureComponent {
render() {
const { id, title ...otherProps } = this.props;
return (
<div>
// ....
</div>
)
}
}
PureComponent
使用shallowEqual。阿波罗的数据是不可变的。
为什么先前存在的项目会重新渲染?