ключ и componentDidUpdate используются для совершенно разных целей.
Из документации
React реализует эвристию c Алгоритм O (n), основанный на двух предположениях:
- Два элемента разных типов будут давать разные деревья.
- Разработчик может намекнуть, какие дочерние элементы могут быть стабильными при разных рендерингах с ключевой опорой.
Это означает, что если ключ, переданный компоненту реакции, изменится, реакция снесет старое дерево, представленное компонентом в DOM, и создаст новое дерево (размонтируйте, а затем снова подключите компонент, даже если ничего не изменилось, кроме ключа).
С другой стороны, componentDidUpdate
будет запускаться после обновления компонента, то есть свойства или состояния для указанного c компонент был изменен. Обновление не приведет к удалению дерева из состояния.
Вы не должны использовать ключ в обычных случаях и позволить срабатыванию props / state change componendDidUpdate и обрабатывать ваши logi c там. Ключ используется в некоторых случаях, когда у вас есть большое количество logi c состояний и вы хотите сбросить c состояния logi *1033* в исходное состояние, т.е. перемонтировать компонент с нуля. По сути, вам следует избегать использования ключа для размонтирования и повторного монтирования вашего компонента, поскольку эта операция влияет на производительность.