在以下两种方式中使用React的setState()方法有什么区别:
setState({key: value}, myFunction())
VS
setState({key: value}, () => myFunction())
答案 0 :(得分:0)
(编辑后使用myFunction
作为帖子)。
两行代码完全不同:
setState({key: value}, myFunction())
在调用myFunction
之前,在计算参数时调用setState
。然后将myFunction
的返回值作为第二个参数传递给setState
。因此,只有myFunction()
返回setState
使用的回调函数时,此版本才有用。但是,如果myFunction
是回调,那么它就是一个错误,它可以表现为在更新状态之前调用回调而不是之后的回调。
setState({key: value}, () => myFunction())
创建一个匿名回调函数,该函数在执行时返回调用myFunction
的返回值。箭头回调函数作为第二个参数传递给setState
,而不在此过程中调用myFunction
。在myFunction
更新状态并调用箭头函数后,将调用setState
。
第二种形式通常更好地编写而不创建匿名函数中介:
setState({key: value}, myFunction)
虽然可能与问题无关,但在调用this
之前,可以使用箭头函数将myFunction
this
值设置为setState
值:
setState({key: value}, ()=>this.myFunction); // use current this value in the callback.