Документация React предлагает получить исходные данные в функции componentDidMount. На мой взгляд, это не интуитивно понятно, потому что мы могли бы сделать это раньше в componentWillMount (первая функция из Жизненный цикл компонента React). В общем, я думаю, что мы должны начать AJAX-звонки как можно скорее, чтобы пользователю не приходилось их ждать. Так почему мы должны ждать, пока компонент будет отрисован?

Мои вопросы:

  • Есть ли проблемы с использованием AJAX в componentWillMount?
  • Есть ли преимущества от использования AJAX в componentDidMount?
0
Paweł Adamski 7 Сен 2016 в 10:20

3 ответа

Лучший ответ

Скажем, вы используете AJAX на componentWillMount

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

Теперь у вас есть ожидающий запрос AJAX. Это хорошая практика - отменить этот запрос, когда компонент отключен.

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

Но допустим, по какой-то причине компонент не смонтирован. у вас все еще есть ожидающий запрос ajax, который нельзя отменить нигде (поскольку компонент не смонтирован, componentWillUnmount не будет достигнут), что приведет к утечке памяти.

Если вы поместили запрос ajax в componentDidMount, у вас была гарантия, что componentWillUnmount сработает, поскольку компонент установлен, что позволяет безопасно очистить ваш запрос.

7
David 15 Окт 2017 в 02:29

Просто создайте компонент, когда у вас есть данные, и передайте его через props. Попросите родительский компонент (если он у вас есть) выполнить запрос.

1
skay- 7 Сен 2016 в 08:05

Это зависит от вашей задачи. например, я использовал запрос ajax в componentWillReceiveProps, здесь. что именно вас беспокоит? что делает твой аякс?

0
Community 23 Май 2017 в 12:34