React: getDerivedStateFromProps выполняется после setState # 13015

Созданный на 24 дек. 2019  ·  4Комментарии  ·  Источник: facebook/react

В идеале getDerivedStateFromProps не следует вызывать из-за setState текущего компонента. Но он так себя ведет. Кто-нибудь может объяснить?

Не удалось найти решение в №13015

Question

Все 4 Комментарий

setState приведет к re-render компонента. Для каждого render компонента следует вызывать getDerivedStateFromProps . Вот как работает getDerivedStateFromProps .

Вам следует подумать о том, как вернуть частичное состояние для слияния.

Без примера кода я не понимаю, что вы говорите или спрашиваете.

Ожидается, что getDerivedStateFromProps будет вызываться после setState , поскольку состояние, возвращаемое getDerivedStateFromProps , основано как на текущем props и на предыдущем state . Итак, если состояние изменилось (вызовом setState ), возможно, что производное состояние также могло измениться (поскольку это комбинация props и state ) .

Ранее мы не вызывали его снова, если props не изменилось, но это поведение вызвало проблемы, и поэтому мы изменили его (исправили) в версии 16.4, как упоминалось в этом сообщении в блоге:
https://reactjs.org/blog/2018/05/23/react-v-16-4.html#bugfix -for-getdehibitedstatefromprops

Если вы хотите поделиться кодом и задать конкретный вопрос о том, почему запускается метод, один из нас может взглянуть. А пока я предполагаю, что на ваш вопрос дан ответ: smile:

setState приведет к re-render компонента. Для каждого render компонента следует вызывать getDerivedStateFromProps . Вот как работает getDerivedStateFromProps .

Вам следует подумать о том, как вернуть частичное состояние для слияния.

Спасибо

@bvaughn , спасибо за ответ

Была ли эта страница полезной?
0 / 5 - 0 рейтинги