非常基本的代码示例:反应重新渲染阵列,而项重点没有改变列表
class List extends React.Component {
render() {
const listComponent = this.props.numbers.map((number) =>
<Item key={ number.toString() } value={ number } />,
);
return (
<div>
<button onClick={() => this.setState({ test: 1 })}>Re-render list</button>
{ listComponent }
</div>
);
}
}
的这里是项目:
class Item extends React.Component {
render() {
return (
<div>{ this.props.value + ', rendered time:' + new Date().getTime() }</div>
);
}
}
当我点击按钮,状态已更新,因此List组件重新呈现。
但是,如果我的理解是正确的,这些项目不应该重新呈现,因为关键项目没有改变。但是它会在时间戳更新后重新渲染。
有人可以解释我为什么吗?
我明白,但后来什么是一种针对阵列的项目的一个关键性质的观点? – lost17
我如何理解它,这些键只是性能优化,用于比较列表项目中是否有任何更改。与重新渲染或不重新渲染无关。以下是关于为什么键有必要的深入解释:https://facebook.github.io/react/docs/reconciliation.html#recursing-on-children –