ReactJS - Ajax call - Где Легит? - PullRequest
       0

ReactJS - Ajax call - Где Легит?

0 голосов
/ 31 октября 2018

Я используюactJS 16.5.2, и я немного запутался в следующем основном выпуске (17), где не рекомендуется использовать какой-то классический метод компонента LiceCycle (componentWillReceiveProps, componentWillUpdate и componentWillMount).

После этого поста: https://medium.com/@baphemot/understanding-reactjs-component-life-cycle-823a640b3e8d

Я пытаюсь быть готовым, но я не могу найти правильное место, чтобы сделать AjaxCall в моем компоненте для заполнения данных самого компонента.

Я обычно делал Wrapper 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 Async Methods?

1 Ответ

0 голосов
/ 31 октября 2018

Вы должны использовать componentDidMount для выполнения вызовов AJAX. Даже если componentWillMount, componentDidMount является методом, вы должны выполнять вызовы API. Читать this

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...