列表的非常基本的代码示例:
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 组件会重新呈现。
但是,如果我的理解是正确的,则不应重新渲染这些项目,因为关键项目没有改变。但它确实会重新渲染,因为时间戳已更新。
有人可以解释我为什么吗?