Передать неизвестный контекст дочернему компоненту

У меня есть внешний компонент (Leaflet Map). У этого компонента много дочерних элементов. Приложение рисует разные вещи на карте в зависимости от состояния, маршрутов и т.д. Использование листовка (или просто карты) компоненты, такие как Контуры, маркеры и т.д. требует от меня непосредственно оказывать им внутри карта, поэтому контекст доступен (маркер вызывает экземпляр карты при монтировании и т. д.).

Однако, это становится не ремонтопригоден кодом, так как моя карта огромна с большим количеством условно оказываемыми детей (если маршрут А, затем делает компонент X и Y).

Я хочу найти способ отображать детей в нужных местах, связанных с их доменами (карта - это просто контейнер, в который я ввожу). Но они требуют контекста. Я пытался выяснить это с Порталами, но он не работает, так как Реагировать делают ребенок вне контекст и только проекты оказали DOM внутри.

Так что мне нужно что-то вроде этого: портал компонент, который установлен внутри карты все время и как-то получает все контекст может получить доступ и как-то впрыскивает его в проектируемой компонента.

Конечно, он не должен быть РЕАКТ портал , но я хочу API выглядеть следующим образом:

<SomeDomainComponent>
  <MapPortal>
    <Marker position={[50, 20]} />
  </MapPortal>
</SomeDomainComponent>

и он построит такое дерево:

<LeafletMap>
  <Marker position={[50, 20]} />
</LeafletMap>

Как этого добиться?

Я думал о своем собственном контексте, но я не могу сериализации Реагировать компонент в значении контекста, верно?


person Łukasz Ostrowski    schedule 31.05.2019    source источник


Ответы (1)


Я использую реагирует-через для достижения компоненты телепортации с SVG абстракцией. Используя монотонно возрастающей числовой идентификатор на agent, throughArea может сортировать компоненты и убедиться, что они оказываются в неопределенном порядке.

Но контекст не сохраняется и контекст назначения является то, что компонент видит, который не является идеальным.

person Thomas    schedule 08.10.2020