Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
组件willmount中的ReactJS-AJAX调用_Ajax_Reactjs - Fatal编程技术网

组件willmount中的ReactJS-AJAX调用

组件willmount中的ReactJS-AJAX调用,ajax,reactjs,Ajax,Reactjs,建议在componentDidMount函数中获取初始数据。对于我来说,这不是直观的,因为我们可以在组件willmount(中的第一个函数)中更快地完成。一般来说,我认为我们应该尽快启动AJAX调用,这样用户就不必等待它们了。那个么,为什么我们必须等到组件被渲染之后呢 我的问题是: 在组件willmount中使用AJAX是否有任何问题 在组件安装中使用AJAX有什么好处吗 这取决于您的任务。例如,我在componentWillReceiveProps中使用了一个ajax请求。你到底担心什么?你

建议在
componentDidMount
函数中获取初始数据。对于我来说,这不是直观的,因为我们可以在
组件willmount
(中的第一个函数)中更快地完成。一般来说,我认为我们应该尽快启动AJAX调用,这样用户就不必等待它们了。那个么,为什么我们必须等到组件被渲染之后呢

我的问题是:

  • 在组件willmount中使用AJAX是否有任何问题
  • 在组件安装中使用AJAX有什么好处吗

这取决于您的任务。例如,我在componentWillReceiveProps中使用了一个ajax请求。你到底担心什么?你的ajax是什么

只要在有数据时创建组件并通过道具传递即可。让父组件(如果您有)执行请求。

假设您在
组件上执行AJAX将挂载

componentWillMount(){
   this.serverRequest = $.get(...);
}
现在您有一个挂起的AJAX请求。卸载组件时取消此请求是一种很好的做法

componentWillUnmount: function() {
    this.serverRequest.abort();
}
但不管出于什么原因,组件都没有安装。您仍然有挂起的ajax请求,不能在任何地方取消(因为组件未装入,
componentWillUnmount
),因此会造成内存泄漏

如果您将ajax请求放在
componentDidMount
上,您可以保证
componentWillUnmount
将启动,因为该组件已装载,允许您安全地清理请求