【发布时间】:2017-05-09 19:07:53
【问题描述】:
对于在其生命周期的某个时刻隐藏的组件,渲染它的最佳方式是什么? 1)渲染组件,但不显示它(显示:无)。 2) 仅在需要时渲染组件。 什么对性能更好?如果组件的 props 和 state 稍后更新,是否让组件存在但隐藏在虚拟 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中,而React 只更改css 属性以显示Node。第二个变体是相反的,因为 React 需要根据最佳实践向/从DOM. 添加/删除节点 - 添加或删除元素总是比仅仅更改元素可见性要慢 -
是的。但是在页面的第一次渲染(当组件根本不渲染时会更快)和组件的未来使用之间也存在平衡。假设该组件是一个子菜单,仅当用户决定过滤页面上的内容时才显示。大多数用户永远不会这样做。所以对他们来说,页面会渲染得更快……
标签: javascript performance reactjs rendering react-dom