Всем привет! Заинтересовала проблема обхода Lightning Locker в LWC, я уже видел ответ в других темах о том что это возможно если не использовать LightingElement, но только вот ничего не получается... Буду признателен за подсказки.
Что-то не понятна суть вопроса. Lightning Locker это базовая штука Lightning UI которая включает в себя целый комплекс разных решений. Что значит его обойти? Полностью отключить? Нужно получить доступ к другим компонентам на странице или к глобальному окружению? Или достучаться до "скрытых" JS функций? Lightning Locker не один год писали и допиливали серьезные команды разрабов. Явно такую штуку просто так в две строчки кода не сломать. Да и смысл обходить этот механизм? Если даже что-то заработает в одном браузере, где вероятность что решение будет работать у всех пользователей. Имхо тут надо подстраиваться под Lightning Locker чем стараться его обойти. Почему я и спрашиваю что за задача, может проще будет "обойти" саму задачу чем Lightning Locker.
Это не имеет смысла. Не имеет смысла напрямую обращаться к методам в родительском компоненте. Компонент не знает и не должен знать где его будут использовать и кто будет его родителем. Есть предельно простая схема для взаимодействия child-to-parent в LWC через events. Когда компонент инициирует событие с данными, а уже родительский компонент подписывается на это событие и реагирует, то есть вызывает тот же метод. Зачем здесь что-то ломать? Так же родитель после того как споймал событие, вызвал метод, что-то сделал, может вернуть данные обратно в child компонент. Схема взаимодействия между LWC компонентами полностью достаточна чтобы замутить любой сложности взаимодействие. Вот со стандартными компонентами уже сложнее потому что внутрь к ним не влезешь и можно использовать только набор стандартных свойств и событий (обычно в таких случаях если мне не хватает чего-то в стандартных компонентах я пишу его более навороченный клон с нуля уже со всеми возможностями взаимодействия что я описал выше)
via, сорри за этот вопрос, но каков уровень ваших знаний LWC? Просто если вы скиловый разраб и ищите реально сложные варианты как нагнуть LWC то можем попробовать обсудить реальную задачу. Если вы только начали пробовать LWC то я бы посоветовал глубже разобраться в стандартных возможностях LWC а обход Lightning Locker оставить на самый конец.
Хорошо, у меня есть инсайд о том что LWC могут общатся на всех уровнях (чайлд-парент, на одном уровне) без ивентов, Lightning Message Service и pub/sub используя API как при парент-чайлд связи. Вот я и хочу проверить / понять можно ли этого добиться. Просто профессиональное любопытство.
Хм. Я с таким пока не сталкивался. Было дело использовал Lightning Message Service чтобы организовать связь между Visualforce и LWC. Но это по сути те же самые events только в другой обертке и работают глобально. pub/sub не пробовал на практике, но тут опять же event - кто-то отсылает, кто-то слушает. Но что-то глобальное без events а по принципу "дернуть метод" пока не встречал.
Задача общения разных компонентов между собой на прямую не связана с Locker Service. Но без решения задачи с Locker Service у нас будет больше проблем, особенно в больших приложениях с десятками компонентов.