采取这种情况
this.setState({ number: newNumber}, () => console.log(number))
然后是这个:
this.setState({ number: newNumber}, console.log(number))
第一个(带有箭头)正确记录了新的状态,第二个(没有箭头)似乎在记录控制台状态。将它落后一步。
为什么箭头功能会导致setState回调中的箭头功能正确?
答案 0 :(得分:1)
因为,setState
is a callback function中的第二个参数。但这不是回调:
console.log(number)
答案 1 :(得分:0)
与第一个答案一样,您需要一个回调函数。如果您不将console.log()
包装在函数中,则它不是回调函数。
第二个(无箭头)似乎在控制台。将其落后一步。
console.log()
不是立即执行回调,而是立即执行,记录number
变量的当前值,并将其返回值作为回调参数传递。
您通过
致电console.log(number)
this.setState({ number: newNumber}, console.log(number))
并传递未定义的回调。由于console.log()返回未定义。这样this.setState
变成
this.setState({number: newNumber}, undefined);
this.setState()
可能有某种标志,在没有提供回调参数的情况下(未提供与未提供参数相同的参数)不执行回调函数,这解释了为什么不抛出undefined()
处出现错误。