Javascript 如果组件';谁的父母改变了?

Javascript 如果组件';谁的父母改变了?,javascript,reactjs,Javascript,Reactjs,当VDOM从 <Foo><Bar1><Baz id={123}/></Bar1></Foo> 到 Foo渲染Bar1、Bar2或完全不同的内容。Bar1和Bar2始终呈现为,但Foo也可能呈现呈现为的Bar3 不必要地重新渲染Baz的成本非常高。当且仅当id更改时,Baz在shouldComponentUpdate中返回true 当Foo决定渲染Bar1而不是Bar2时,是否可以防止重新渲染Baz?或者以某种方式重复使用该组件

当VDOM从

<Foo><Bar1><Baz id={123}/></Bar1></Foo>


Foo渲染Bar1、Bar2或完全不同的内容。Bar1和Bar2始终呈现为
,但Foo也可能呈现呈现为
的Bar3

不必要地重新渲染Baz的成本非常高。当且仅当id更改时,Baz在shouldComponentUpdate中返回true


当Foo决定渲染Bar1而不是Bar2时,是否可以防止重新渲染Baz?或者以某种方式重复使用该组件?Kludges也很受欢迎。

您不能为Baz添加一个键吗?这不会鼓励React重新使用组件吗?我可以,明天会测试它是否有效这就是我的意思。嗯,是的,我一般都熟悉使用关键道具,但不知道更改Baz的关键点会阻止重新渲染?而且也不是从(重新)阅读手册页面上得到的图片,但我明天会给它拍一张。@eagle12不,它仍然会重新渲染Baz。请原谅编译到js,但例如,当点击按钮时,Baz会重新呈现。您不能向Baz添加一个键吗?这不会鼓励React重新使用组件吗?我可以,明天会测试它是否有效这就是我的意思。嗯,是的,我一般都熟悉使用关键道具,但不知道更改Baz的关键点会阻止重新渲染?而且也不是从(重新)阅读手册页面上得到的图片,但我明天会给它拍一张。@eagle12不,它仍然会重新渲染Baz。请原谅编译为js,但这里的示例是,当单击按钮时,Baz会重新呈现
<Foo><Bar2><Baz id={123}/></Bar2></Foo>