Предотвращение повторных рендерингов с помощью useShallow¶
Если вам нужно подписаться на вычисляемое состояние из хранилища, рекомендуется использовать селектор.
Вычисляемый селектор вызовет повторный рендер, если вывод изменился в соответствии с Object.is.
В этом случае вы можете использовать useShallow
, чтобы избежать повторного рендеринга, если вычисляемое значение всегда неглубоко и равно предыдущему.
Пример¶
У нас есть хранилище, в котором каждый медведь ассоциируется с едой, и мы хотим отобразить их имена.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
Теперь папа-медведь хочет пиццу:
1 2 3 |
|
Это изменение вызывает повторные рендеры BearNames
, даже если фактический вывод names
не изменился в соответствии с shallow equal.
Мы можем исправить это с помощью useShallow
!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
Теперь все они могут заказывать другие блюда, не вызывая ненужных повторных запусков нашего компонента BearNames
.
Источник — https://docs.pmnd.rs/zustand/guides/prevent-rerenders-with-use-shallow