В соответствии с документацией React componentDidMount () - это место, где могут возникать побочные эффекты, но следует избегать this.setState ()
В этом ничего нетдокументы, в которых это сказано.
Кроме того, в нем четко сказано:
Вы можете немедленно вызвать setState () в componentDidMount ()
Я думаю, что вы смешали это componentdidupdate
Как насчет отправки действия, которое обновляет хранилище
Это прекрасно сделать в componentDidMount
, еслиОбновление магазина приведет к тому, что новый компонент prop
будет введен в компонент, будет выполнен еще один вызов render
.и это прекрасно!
Помните, componentDidMount
вызывается только один раз в течение времени жизни компонента:
componentDidMount () вызывается сразу после монтирования компонента (вставки в дерево)
Так что нет никакого способа получить там бесконечный цикл (как предложено в комментариях).
Опять же, я думаю, вы имели в виду componentdidupdate
, который будет вызываться при каждом обновлении.поэтому при обновлении состояния он будет запускаться снова и снова.
Вот почему вы должны обновлять состояние условно:
Вы можете немедленно вызвать setState () в componentDidUpdate (), но учтите, чтоон должен быть заключен в условие
Редактировать
Как насчет отправки действия, обновляющего магазин
То же правило применяется здесь.отправка действия может вызвать другой рендер, если переданы новые значения проп.это может привести к бесконечному циклу.
Как уже упоминалось в документации, просто проверьте условие перед отправкой действия.