Я использую React Context API, чтобы избежать бурения опор. Прямо сейчас мой Контекст включает useState
и различные функции, которые обновляют состояние - они помещаются в объект const, который передается как value
опора ActionsContext.Provider
. Это абстракция моей текущей иерархии компонентов:
Header
---NavPanel
ContentContainer
---Content (Context.Consumer being returned in this component)
где Header и ContentContainer являются родственными элементами, а NavPanel и ContentContainer - их соответствующими дочерними элементами.
Сначала я поместил Context.Consumer
в Content, потому что другим элементам он не нужен. Однако сейчас я создаю функцию, в которой NavPanel должна знать о состоянии, управляемом контекстом. Поэтому я поместил еще одного потребителя в NavPanel, только чтобы обнаружить, что отдельный потребитель означает отдельный экземпляр состояния.
Есть ли какой-нибудь умный обходной путь, который дает NavPanel и Content доступ к одному и тому же состоянию, который не предполагает помещения Consumer в родительский компонент Header и Content? Это привело бы к большому количеству буровых работ с учетом того, как мое приложение в настоящее время структурировано.
Пример нескольких экземпляров Codesandbox: https://codesandbox.io/s/context-multiple-consumers-v2wte