Можно ли вызывать несколько (более одного) асинхронных действий при монтировании компонента? - PullRequest
0 голосов
/ 18 декабря 2018

Можно ли отправлять несколько асинхронных действий в методе componentDidMount?Некоторые из них связаны - например, сначала я выбираю типы отчетов, которые принадлежат фактическому пользователю, затем я выбираю детали отчета на основе типа отчета.Теперь я хочу назвать еще одно действие с деталями отчета.Это было бы как:

componentDidMount() {
  this.props.reportTypesAction().then(
    () => {
      this.setState({ reportTypes: this.props.reportTypes });
      this.props.reportAction();
      this.propt.anotherReportAction();
    }
  )
}

1 Ответ

0 голосов
/ 18 декабря 2018

Можно назвать любое число из них в componentDidMount, если они должны быть вызваны тогда.Но обработка обещания, которое не сразу передается обратному вызову, а сохраняется в хранилище с избыточностью и на которое ссылаются реквизиты в цепочке обещаний, не является оптимальным.

Я имею в виду, что вы можете отправлять один reportTypesAction синхронно для хранения и использования redux-saga для простой обработки остальных обновлений, связанных с обещаниями.

Использование подхода с одной отправкой this.setState будет условно вызываться в componentDidUpdate или shouldComponentUpdate, поскольку в componentDidMount, this.props.reportTypes может быть пустым.

Это также может избежать ненужныхпересборка.

...