Performance 不从父级渲染组件和#x27;s渲染方法,而不从其自己的渲染方法渲染组件?

Performance 不从父级渲染组件和#x27;s渲染方法,而不从其自己的渲染方法渲染组件?,performance,reactjs,components,render,Performance,Reactjs,Components,Render,我的直觉是,选择不在父级的render方法中渲染组件与选择不在其自己的render方法中渲染相同组件有区别;至少从幕后来看,因为感知到的最终结果是相同的 有人能解释一下是否确实存在差异,它们是什么 很抱歉缺少代码示例,当我有一台普通计算机可用时,我会添加一些 更新: 例如,从父组件的render方法内部: ... render() { return( <ParentComponent> {(this.state.renderSpecif

我的直觉是,选择不在父级的
render
方法中渲染组件与选择不在其自己的
render
方法中渲染相同组件有区别;至少从幕后来看,因为感知到的最终结果是相同的

有人能解释一下是否确实存在差异,它们是什么

很抱歉缺少代码示例,当我有一台普通计算机可用时,我会添加一些

更新:

例如,从父组件的
render
方法内部:

...
render() {
    return(
        <ParentComponent>
            {(this.state.renderSpecificChild) ? <SpecificChild /> : null}
            <SomeOtherChild />
        </ParentComponent>
    );
}
...

这取决于你想要什么。如果您的子组件在其他地方可重用,并且需要进行非呈现检查,那么您可以将其放入子组件中,否则,如果您不希望此检查出现在应用程序的另一部分中,您可以将其设置得更具体,只需将其放入父组件中即可


如果你现在还没有这个场景,那么你把它放在哪个场景中并不重要。如果以后需要更改,重构应该很容易。

回答我自己的问题,主要区别在于,当父级控制是否呈现子级而不是子级时,组件会卸载,并且在内部,React会清理。如果孩子自己决定是否渲染某些东西,那么它的所有方法等都会保留在内存中。

我明白了。然而,我的问题更多的是“在幕后发生了什么,这两种方法在幕后有什么不同?”?例如,组件的生命周期方法是否在一种情况下保存在内存中,而不是在另一种情况下?我希望我能澄清一点
...
render() {
    return(
        {(this.props.renderSelf) ? <div></div> : null}
    );
}
...
...
render() {
    return(
        <ParentComponent>
            <SpecificChild />
            <SomeOtherChild />
        </ParentComponent>
    );
}
...