对于在其生命周期中的某个点处隐藏的组件,渲染它的最佳方式是什么? 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) –