Глобальный контекст для побитового компонента React

Я разрабатываю библиотеку компонентов React для веб-сайта. Для локальной разработки я использую Storybook. Я думаю, bit может быть хорошим инструментом (лучше, чем ссылка npm) для экспорта компонентов библиотеки и импорта их в репозиторий веб-сайта. Теперь проблема в том, что я использую глобальный контекст для некоторых компонентов, но битовые компоненты должны быть изолированными и самодостаточными. Я не хочу оборачивать все мои крошечные компоненты, которые используют глобальный контекст только для их рендеринга на bit.dev!

Мне удалось решить ту же проблему со сборником рассказов с помощью декораторов. Итак, я определяю компонент, не оборачивая его ContextProvider, а затем в файле историй я использую декоратор, который обертывает мой компонент с помощью ContextProvider.

Есть ли способ обернуть битовые компоненты поставщиком глобального контекста без упаковки фактического компонента, который будет использоваться на рабочем веб-сайте, где один поставщик глобального контекста обертывает все приложение? А как насчет лучших практик такого рода рабочего процесса?


person bluePhlavio    schedule 29.04.2020    source источник


Ответы (1)


Использование глобального контекста при реализации повторно используемых компонентов не рекомендуется.
Не только при использовании Bit, но и когда другой проект использует компонент, он должен иметь такой же точный контекст для работы компонента. Сделать компонент менее пригодным для повторного использования и сделать его менее привлекательным для потребителей.
Тот факт, что это неудобно для рендеринга примеров на игровой площадке в bit.dev, является для него побочным эффектом.
Вы можете либо отделить состояние из компонента и используйте параметры для получения состояния и действий напрямую через API. Или вы можете инкапсулировать состояние внутри компонента. Подробнее об этом можно прочитать в разделе «Лучшие практики Bit для создания повторно используемых компонентов» - https://docs.bit.dev/docs/best-practices#state-managers
а также здесь - https://github.com/Tallyb/reusable-components-styleguide#globals

person Josh    schedule 20.05.2020