(React)我应该在调用setState之前先检查状态变量吗?

时间:2018-01-30 11:27:53

标签: reactjs

我很反应,我有一个运行所有4秒(定时器)的代码功能。 此计时器设置变量。我们说:

this.setState({
    VariableA: false
}); 

现在这段代码全程运行4秒。大多数情况下,VariableA都是假的。那么我应该首先检查变量是否为假或者是否反应检查变量是否为假? 为了更好地理解,我应该编写Code-A还是Code-B:

代码-A:

function doSomething(){
        this.setState({
            VariableA: false
        }); 
}

代码-B:

function doSomething(){
     if(this.state.VariableA != false){
        this.setState({
            VariableA: false
        }); 
     }
}

2 个答案:

答案 0 :(得分:1)

reconcilation会导致重新渲染,这实际上会导致您的DOM PureComponent,现在即使没有任何更改,也会发生协调阶段,您可以使用shouldComponentUpdate来避免它它基本上在setState中实现浅层比较,并且如果状态或道具没有任何变化则不会触发重新渲染,它可以处理更多的情况,而不是每次比较{{{ 1}}

根据 documentation

  

React.PureComponent用浅支柱和状态来实现它   比较。如果您的React组件的render()函数呈现   同样的结果给出相同的道具和状态,你可以使用   React.PureComponent在某些情况下提升了性能

答案 1 :(得分:0)

在运行重新渲染之前,React将检查状态是否已更改。我想,如果你有更复杂的状态,你应该自己检查,因为React将对所有状态属性运行检查。