ReactJs:在this.setState的情况下不调用回调函数

时间:2015-03-04 11:23:18

标签: javascript reactjs

this.setState中调用http://jsfiddle.net/69z2wepo/3535/ componentWillMount并使用回调this.loadData调用this.loadData {{1}}。但函数{{1}}永远不会被称为回调。

1 个答案:

答案 0 :(得分:2)

我不知道内部是如何工作的,但是查看setState()的文档......

  

...您可以提供一个可选的回调函数,该函数在setState完成后执行并重新呈现该组件。

...以及componentWillMount()的文档......

  

如果您在此方法中调用setStaterender()将会看到更新后的状态,并且只会在状态发生变化时执行一次。

...我认为这与setState()中调用render()并不排队重新渲染这一事实有关。

鉴于此,对loadData进行初始调用的最合适位置是componentDidMount(),它会在初始渲染后立即触发:

componentWillMount() {
  // ...
  this.setState({loaded, data});
},

componentDidMount() {
  this.loadData();
},