@nickname13384

Как заставить React класс перезапустить render( )?

Как заставить react перезапустить render?
Пробовал использовать this.forceUpdate() - не работает, или я неправильно его использую.

componentDidUpdate(prevProps, prevState) {
  if(this.props.resetRender === true){
  	console.log(this.props.resetRender) // true
  	this.forceUpdate()
  }
}

Выдает ошибку:

Maximum update depth exceeded. This can happen when a component repeatedly calls setState inside componentWillUpdate or componentDidUpdate. React limits the number of nested updates to prevent infinite loops.
  • Вопрос задан
  • 1364 просмотра
Решения вопроса 1
Robur
@Robur
Знаю больше чем это необходимо
после render вызывается componentDidUpdate в котором вы вызываете render, после которого вызывается componentDidUpdate в котором... Идея я думаю ясна.

Если вам надо перерисовать компонент когда родитель меняет resetRender на true, перенесите этот код в 'componentWillUpdate'

А вообще родитель не должен форсить рендер таким образом. Если сильно хочется - сделайте метод rerender () { this.forceUpdate() } и дергайте его из родителя где нужно напрямую. или просто дергайте child.forceUpdate(). Это будет так же плохо, но немного меньшее извращение и работать будет как часы.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы