Я использую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?