关于this.setState的回调函数的未来状态

时间:2017-09-13 09:59:53

标签: reactjs

我不知道如何处理关键字,所以我无法检查重复的问题。

昨天我打开了react.js的内部并查看了ReactComponent.prototype.setState。在函数的顶部,描述中有以下语句。

  

当为setState提供一个函数时,它将在未来的某个时刻被调用(不同步)。它将使用最新的组件参数(状态,道具,上下文)进行调用。这些值可能与此不同。*因为您的函数可能在receiveProps之后但在shouldComponentUpdate之前调用,并且此新状态,props和context也不会被分配给它。

似乎整个上下文是当我编写一个回调函数时,this.*可能与我在未来的某个时刻所预期的不同,而且我并没有特别关注会发生什么。

如果可能的话,如果你能给我一个简单的例子,我将不胜感激。

1 个答案:

答案 0 :(得分:1)

这意味着当您进入setState回调state时,propscontext不能保证与您在this.state找到的对象相同, this.propsthis.context。 E.g。

this.setState((state, props, context) => {
  this.state === state // false
  this.props === props // false
  this.context === context // false
})

换句话说,不要触及setState回调作为参数传递给你的任何对象。