Как на самом деле выглядит частичное обновление [React Hook]?


Что это такое?

Я думаю, вы знаете, что существует множество советов по улучшению производительности react render, таких как useMemo.

Если вы уже читали блог Дэна, вы также должны знать другие советы, такие как «Переместить состояние вниз» и «Поднять содержимое вверх».
Блог Дэна

Но задумывались ли вы когда-нибудь, что если у вас есть сложный компонент, и у этого компонента есть список элементов (может быть десять), если вы хотите обновить один из элементов (может быть №3), то вам достаточно вызвать функцию partialRender, такую как

partialRender({3: `my new content`});
Войти в полноэкранный режим Выйти из полноэкранного режима

И все, вам не нужно заботиться о других оптимизациях, и это не приведет к полному повторному рендерингу.

Вот что делает usePartialRender, и иногда это немного сложно, кто-то подумает, можно ли сделать частичный рендеринг для компонента функции? Да, это действительно частичное обновление.

Какова цель usePartialRender.

  1. Помочь вам обновить частичное содержимое сложного компонента без реструктуризации.

  2. обеспечить простой способ обновления всего содержимого.

Быстрый обзор

  • Онлайн-демонстрация: codesandbox
  const [ListContent, partialRender, setRenderKeys] =
 usePartialRender(
    initRenderKeys,
    initList
  );
Вход в полноэкранный режим Выйти из полноэкранного режима

usePartialRender может вводить две необязательные начальные переменные или не вводить ничего.

Начальные переменные запускаются только один раз и могут лениво назначаться.

Входной ключ Требуемый Описание Ленивое присвоение Время выполнения
initRenderKeys Нет Начальные ключи рендеринга, используются для partialRender({updateKey: updateContent}) ()=>initRenderKeys один
initList Нет Начальный список, который вы хотите рендерить, если ключ не существует в ключах рендеринга, он не будет показан. ()=>initList один
Выходной КЛЮЧ Описание Будет ли рендериться весь список?
ListContent Финальное содержимое, которое вы можете использовать в рендере напрямую, например <div>{ListContent}</div> Нет
partialRender Функция частичного рендеринга, вы можете назначить только обновляемый контент Нет
setRenderKeys Это может помочь вам управлять ключами рендеринга, вам нужно назначить все ключи из списка. Это вызовет полный рендеринг, но не повлияет на рендеринг списка. Да

Заключение

Нет никакой магии для usePartialRender, я стараюсь сделать все автоматическим и сделать использование более удобным. usePartialRender особенно подходит для динамических дочерних чисел, я использую его в своих всплывающих компонентах, и позволяю ему собирать все плавающие DOM.

  • исходный код usePartialRender
    https://github.com/react-atomic/reshow/blob/main/packages/reshow-return/src/usePartialRender.js

  • компонент всплывающего окна react
    https://github.com/react-atomic/react-atomic-organism/tree/main/packages/organism-react-popup

  • пакет NPM
    https://github.com/react-atomic/reshow/blob/main/packages/reshow-return

Оцените статью
devanswers.ru
Добавить комментарий