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

标签 javascript reactjs

就像这个 fiddle http://jsfiddle.net/69z2wepo/3535/ this.setStatecomponentWillMount 中通过回调 this.loadData 调用。但是函数 this.loadData 永远不会被调用为回调。

最佳答案

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

...you can supply an optional callback function that is executed once setState is completed and the component is re-rendered.

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

If you call setState within this method, render() will see the updated state and will be executed only once despite the state change.

...我认为这与在 render() 中调用 setState() 不会排队重新渲染有关。

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

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

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

关于javascript - ReactJs:在 this.setState 的情况下不调用回调函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28853199/

相关文章:

javascript - React 似乎没有将 props 传递给另一个组件

reactjs - 如何在 redux 中收听某些 Action

javascript - 仅显示列表的一部分并切换部分

javascript - js中如何获取正在执行的js的绝对路径?

reactjs - 如何创建 Recoil MutableSnapshot?

javascript - 如何用 Jest 和测试库/ react 捕获这样的错误

reactjs - React,更新由对象数组组成的状态中的单个值

javascript - 没有虚拟 DOM 的 ReactJS

javascript - 在递归函数中保留对象引用

javascript - 在这种情况下,什么是蹦床?