Чем отличается forceUpdate от setState?

Чем отличается forceUpdate от setState? Может ли использование forceUpdate привести к каким то побочным эфектам?
  • Вопрос задан
  • 14175 просмотров
Решения вопроса 2
@LiguidCool
Серьезно?!
forceUpdate() - черным по белому жеж ...
использование forceUpdate привести к каким то побочным эфектам

конечно может. Но вообще это скорее исключение из правил и лучше пользовать setState()

Если кратко:
setState() записывает данные в this.state и вызывает рендер.
forceUpdate() ничего не делает, а просто вызывает рендер. В принципе бесполезная функция, т.е. если ни props, ни state не изменились, то отрендерится один фиг тоже самое. Если честно даже в голову не приходит зачем это может понадобится, кроме каких-нить волшебных асинхронных костылей в render'e.
Ответ написан
maxfarseer
@maxfarseer
https://maxpfrontend.ru, обучаю реакту и компании
Дополню Иван на тот случай, если у вас трудности с переводом:
forceUpdate стоит вызывать если render вашего компонента зависит от чего-то еще (кроме props/state).

Главный побочный эффект - лишние перерисовки. Второе: forceUpdate на текущем компоненте проигнорирует shouldComponentUpdate...

В общем, как вам уже ответили, плюс все тот же перевод документации: старайтесь избегать forceUpdate

p.s. мне на практике ни разу еще не приходилось использовать.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@dollaween
forceUpdate может понадобиться при работе с localStorage, данные которого не имеет смысл дублировать в state (если эти данные только отрисовываются, а не отправляются на сервер, конечно)
Ответ написан
Комментировать
rinat95
@rinat95
студент
единственный раз когда понадобился forceUpdate, это реализовать медиа запросы в проекте в котором нужна была поддержка ie8.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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