考虑父组件的两种不同的渲染方法,P:
render() {
return
<ChildComponent propA={ { staticKey: staticValue} }/>
}
render() {
return someStaticData.map( data =>
<ChildComponent>
<span>
{
data.value.map(dataInner =>
<span>
{ dataInner.value }
<span>
)}
</span>
</ChildComponent>
)
}
子组件按照“React指南”的建议处理shouldComponentUpdate
。
shouldComponentUpdate(nextProps, nextState) {
return shallowCompare(this, nextProps, nextState);
}
在上述两个示例中,子组件始终的shallowCompare
返回true,即使我传递的对象/子项完全相同(因为引用已更改)。这导致了大量浪费的渲染。
如何在不破坏SCU的情况下将静态对象/子项作为道具传递?