我很反应,我有一个运行所有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
});
}
}
答案 0 :(得分:1)
reconcilation
会导致重新渲染,这实际上会导致您的DOM PureComponent
,现在即使没有任何更改,也会发生协调阶段,您可以使用shouldComponentUpdate
来避免它它基本上在setState
中实现浅层比较,并且如果状态或道具没有任何变化则不会触发重新渲染,它可以处理更多的情况,而不是每次比较{{{ 1}}
根据 documentation :
React.PureComponent
用浅支柱和状态来实现它 比较。如果您的React组件的render()
函数呈现 同样的结果给出相同的道具和状态,你可以使用React.PureComponent
在某些情况下提升了性能
答案 1 :(得分:0)
在运行重新渲染之前,React将检查状态是否已更改。我想,如果你有更复杂的状态,你应该自己检查,因为React将对所有状态属性运行检查。