對於在其生命週期中的某個點處隱藏的組件,渲染它的最佳方式是什麼? 1)渲染組件,但不顯示它(display:none)。 2)僅在需要時渲染組件。 什麼更好的性能?如果組件的道具和狀態稍後更新,那麼最好是讓組件存在,但隱藏在虛擬DOM中?有條件地呈現反應組件
render() {
return (
<div style={{display: this.props.visible ? 'block' : 'none'}}>
<RestofComponentHere />
</div>
);
}
或本:
render() {
if (!this.props.visible) {
return null;
}
return (
<div>
<RestofComponentHere />
</div>
);
}
如果我們談論的性能,第一個變體更好,因爲'Node'在'DOM'存在,並作出反應只是改變CSS屬性,以便顯示'Node'。第二個變體是相反的,因爲React需要根據最佳實踐向/從'DOM'添加/移除節點 - 添加或移除元素總是比僅改變元素可見性慢 –
是的。但是,在頁面的第一次渲染(組件未完全渲染時會更快)以及組件的未來使用之間也存在平衡。假設組件是一個子菜單,僅當用戶決定在頁面上過濾東西時纔會顯示。大多數用戶永遠不會這樣做。所以對於他們來說,頁面會渲染得更快...... – reggie
[如何在ReactJS中有條件加載組件]可能的重複(https://stackoverflow.com/questions/21278299/how-to-load-components-conditionally-in- reactjs) –