setState和setTimeout

时间:2018-04-16 06:41:21

标签: javascript reactjs

有时候setState本身并不工作,而且我正在添加小的超时来完成它。 我的第一个问题是;

1-)为什么setState有时候没有延迟工作?

2-)添加setTimeout是否正确? - 它有少量的延迟,比如10毫秒,没什么,但它使我的代码工作并声明要更新。

当我在Angular1中进行编码时,我们有时会使用$ timeout作为范围来应用此更改。但这样做是可以的,在React中我不确定这一点。

任何帮助都将不胜感激,谢谢。

2 个答案:

答案 0 :(得分:0)

听起来你正试图在setState中拨打render。这很糟糕,因为render在状态更新后立即发生。它会导致渲染循环。您也不应该使用setTimeout来执行此操作。这会导致React停止向您发出警告,因为它无法再检测到该问题。这会在您的应用中造成大量随机错误。

您的症状表明您需要将状态推入容器组件。

答案 1 :(得分:-1)

设置状态有延迟的原因是在设置状态时调用了ReactJS的3生命周期方法。 setTimeout是一种获取刚刚设置的状态的当前值的方法,但另一种方法是你可以在setState中创建一个回调函数来获取当前值。 除非没有其他选择,否则必须始终避免使用setTimeout。

例如: this.setState({show:true},()=>{console.log(this.state.show)})

相关问题