Я работаю над модулем контекстного меню в ReactJS, и это заставило меня задуматься о том, как иметь дело с неиерархическими компонентами.ReactJS и неиерархические компоненты
Проблема, с которой я столкнулся, заключается в том, что многие различные элементы приложения могут использовать контекстное меню. Обычно в React вы передаете обратный вызов от родительского объекта к дочерним элементам, которые должны взаимодействовать с родителем. Например, моя первая мысль заключалась в том, что функция openContextMenu(mousePosition, optionsObject)
передана из моего класса ContextMenu
ко всем элементам, которые хотят отобразить контекстное меню, щелкнув правой кнопкой мыши.
Но для всех таких элементов (или, может быть, даже любых) это не имеет смысла быть детьми контекстного меню! Контекстное меню не является иерархическим по отношению к другим компонентам приложения. В Angular я, вероятно, написал бы службу ContextMenu
, которая потребовала бы компонентов, если бы они хотели получить доступ к такому меню.
Это ситуация, в которой должен использоваться глобальный обработчик событий? Я думаю об этом все неправильно? Каков способ реагирования на такое горизонтальное взаимодействие между компонентами?
Можете ли вы предоставить свой код, чтобы мы могли лучше понять, где вы застряли? –