日志显示我的父组件正在重新渲染 .
但是子组件的render方法没有被调用 .
我认为孩子用以下逻辑重新投降,我认为我错了 . 当父母重新渲染时,如何确定哪些子组件被重新渲染?
-
Parent的渲染
-
-
孩子的
shouldComponentUpdate
被调用
-
-
-
如果shouldComponentUpdate返回true,则子项重新出现
-
父渲染看起来像
render() {
let { viewConfig } = this.props
console.log("ViewConfigSettingBase rendering")
return (
<div>
{
Object.keys(viewConfig.availableSubviewConfigMap).map((sectionName, index) => {
var subviewConfigData = viewConfig.availableSubviewConfigMap[sectionName]
return (
<ViewConfigSettingRow
key={sectionName}
viewConfigData={subviewConfigData}
sectionName={sectionName}
parentViewConfig={viewConfig}
/>
)
})
}
</div>
)
}
1 回答
在 props 或 state 更改时重新呈现 . 如果您扩展了PureComponent,孩子们会检查道具是否已更改 . 如果是 - > shouldComponendUpdate将返回true,否则返回false . 也许是这样的?
组件生命周期:https://facebook.github.io/react/docs/react-component.html
Updating
shouldComponentUpdate()
您可以在以下页面找到有关反应渲染过程的一些文档:https://facebook.github.io/react/docs/reconciliation.html https://facebook.github.io/react/docs/optimizing-performance.html