Javascript 如何在不破坏shouldComponentUpdate的情况下传递对象/子对象作为道具?

Javascript 如何在不破坏shouldComponentUpdate的情况下传递对象/子对象作为道具?,javascript,reactjs,react-jsx,Javascript,Reactjs,React Jsx,考虑父组件p的两种不同渲染方法: 例1 在上述两种expample情况下,子组件的shallowCompare始终返回true,即使我传递的对象/子对象完全相同(因为引用已更改)。这会导致大量渲染浪费 如何在不破坏SCU的情况下将静态对象/子对象作为道具传递?切换到不可变的数据结构可能会有所帮助,因为SCU钩子只需要比较引用不等式: 将render()的结果存储在一个变量中,该变量可以通过两个示例访问。现在,您可以在调用时引用相同的变量SCU@stackErr将适用于示例1。但是在例2中,如果

考虑父组件p的两种不同渲染方法:

例1 在上述两种expample情况下,子组件的
shallowCompare
始终返回true,即使我传递的对象/子对象完全相同(因为引用已更改)。这会导致大量渲染浪费


如何在不破坏SCU的情况下将静态对象/子对象作为道具传递?

切换到不可变的数据结构可能会有所帮助,因为SCU钩子只需要比较引用不等式:


将render()的结果存储在一个变量中,该变量可以通过两个示例访问。现在,您可以在调用时引用相同的变量SCU@stackErr将适用于示例1。但是在例2中,如果子循环是两级嵌套循环,我就不能将它带到外部。@stackErr查看更新后的示例#2?嗯,好问题,这不是我的专长。对reactjs/JS有更多了解的人可以对此有所了解。你需要比一个衬里多放一点肘部润滑脂。。。甚至
JSON.stringify(this.props)=stringify(nextrops)
可能仍然比过度渲染快,但通过自定义内省可以做得更好。尝试缓存SCU中要比较的最后一个有意义的值。
render() {
  return 
  <ChildComponent propA={ { staticKey: staticValue} }/>
}
render() {
  return someStaticData.map( data => 
    <ChildComponent>
      <span> 
      {
       data.value.map(dataInner => 
         <span>
           { dataInner.value } 
         <span>
      )} 
     </span>
    </ChildComponent>
  )
}
shouldComponentUpdate(nextProps, nextState) {
  return shallowCompare(this, nextProps, nextState);
}