非常基本的代碼示例:反應重新渲染陣列,而項重點沒有改變列表
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 –