ReactJS:检查shouldComponentUpdate上的props和state

Gui*_*sta 4 javascript reactjs reactjs-flux

我想检查所有属性并说明它们是否已更改,如果有任何更改则返回true,并为所有根组件创建基本组件.

我想知道它是不是最好的做法,让我的组件变慢.而且,我所做的总是返回true:

shouldComponentUpdate: function(newProps, newState) {
    if (newState == this.state && this.props == newProps) {
        console.log('false');
        return false;
    }
    console.log('true');
    return true;
},
Run Code Online (Sandbox Code Playgroud)
  1. 我的代码有什么问题吗?
  2. 我应该检查道具和州内的每个变量吗?
  3. 不会检查它们内部的物体是否因它们的大小而变慢?

Gan*_*ide 5

最佳做法是比较道具和状态,shouldComponentUpdate以确定是否应重新渲染组件.

至于为什么它总是评估为true,我相信你的if语句没有执行深度对象比较,并且将你的前一个和当前的道具和状态注册为不同的对象.

我不知道你为什么要检查两个对象中的每个字段,因为如果道具或状态没有改变,React甚至不会尝试重新渲染组件,因此shouldComponentUpdate调用该方法意味着必须具有的东西改变.shouldComponentUpdate可以更好地实现检查一些道具或声明更改并决定是否基于此重新渲染.