2016-09-07 101 views
0

React documentation建议在componentDidMount函数中提取初始数据。对我而言,这并不直观,因为我们可以在componentWillMountReact component life cycle的第一个功能)中尽早完成。一般来说,我认为我们应该很快就开始AJAX调用我们,因此用户不必等待它们。那么为什么我们必须等到组件被渲染?ReactJS - componentWillMount中的AJAX调用

我的问题是:

  • 是否有与componentWillMount使用AJAX的任何问题?
  • componentDidMount中使用AJAX有什么好处吗?

回答

7

说你componentWillMount

componentWillMount(){ 
    this.serverRequest = $.get(...); 
} 

现在你有一个未决的AJAX请求做AJAX。当组件未安装时取消此请求是一种很好的做法。

componentWillUnmount: function() { 
    this.serverRequest.abort(); 
} 

但让我们说出组件未装入的原因。你仍然有你未决的ajax请求,因为这个请求无法在任何地方取消(因为没有安装组件,所以不会到达componentWillUnmount),从而造成内存泄漏。

如果你已经把Ajax请求上componentDidMount你有一个保证,就是componentWillUnmount会因为部分消防安装,让您清理安全

您的要求
0

这取决于你的任务。例如我在componentWillReceiveProps here中使用了ajax请求。你究竟关心什么?你的ajax是什么?

1

只有在有数据并通过道具传递时才创建组件。让父组件(如果有的话)做请求。