ReactJS-Ajax调用-合法性在哪里?

时间:2018-10-31 09:09:00

标签: javascript ajax reactjs

我使用reactJS 16.5.2和Im对下一个主要版本(17)感到困惑,在该版本中,将不赞成使用组件LiceCycle的一些经典方法(componentWillReceiveProps,componentWillUpdate和componentWillMount)。

此帖子之后:https://medium.com/@baphemot/understanding-reactjs-component-life-cycle-823a640b3e8d

我正在准备,但我找不到在组件中进行AjaxCall填充组件本身数据的正确位置。

我通常制作一个包装器组件,用于管理与外部服务器的异步通信。

Component通常在componentWillMount中调用该方法,其中setState为Legit。

componentWillMount()
{
  this.props.someAjaxCall(); //calling the Wrapped method that will call a setDate( { ajaxData : response.data } );
}

renderData()
{
   if (this.props.ajaxData === undefined) //ajax call is not ended yet
   {
      return <span> No data </span>
   }
   return <span> Lot of Data </span> //ajax call has completed
}

render()
{
   return this.renderData();
}

使用此流程,组件将被渲染两次。第一次没有填写ajaxData,因此将呈现“无数据”。 在AjaxCall的结尾,包装器将创建一个setState,以便调用新的渲染器。

通过这种流程,我通常使用shouldComponentUpdate来避免不必要地呈现任何包装组件。

问题是。随着componentWillMount的弃用,我必须在哪里调用Ajax异步方法?

1 个答案:

答案 0 :(得分:0)

您应该使用componentDidMount进行AJAX调用。即使使用componentWillMount,也要使用componentDidMount进行API调用。请阅读this