所以我有一个反应应用程序,其中根组件是基于类的,并保持状态如下:
this.state = {
dataA: { //stuff here},
dataB: { //stuff here}
}
其中dataA
传递给子功能组件A,dataB
传递给子功能组件B.
但是每当我this.setState({dataA: { new state A cotnent }})
时,组件B也会在其数据未被更改时得到更新。
由于组件B是一个功能组件,我无法实现shouldComponentUpdate
方法。只有当dataA
发生变化时,有没有办法不渲染组件B?谢谢!
答案 0 :(得分:0)
这是不可能的,因为功能组件在接收道具或状态时总是会重新渲染,即使值没有改变。
相反,我建议将子函数从功能组件转换为PureComponent
的子类,它实现PureComponents
浅层比较道具和状态。请注意,PureComponents
的所有子项也应为shouldComponentUpdate
,如果这些条件过于严格,您应自行在Component
的子类中实现public function my_first($key = null)
{
return $key ?: request('key');
}
public function my_second()
{
$key = 'Value';
return 'Info from first: ' . $this->my_first($key);
}
。