Регистрация  |  Вход

Как работают Event в Aura и LWC?

Может этот вопрос проще самому проверить, но там могут быть неочевидные детали, которые пока не обсудишь, так и не узнаешь.

Вот Трейлхед модуль Lightning Web Components Basics, в котором четко говорится, что Events Up, Properties Down, то есть для коммуникации между компонентами, находящихся в паралельных ветках, нужно передать данные сначала Events Up до какого-то (пра-) родительского компонента, а оттуда Properties Down в нужный компонент. Выглядит сурово, но логично. Впрочем, в LWC все выглядит сурово, но логично...

А вот другой Трейлхед модуль App Development with Salesforce DX, он уже про Aura.
И в нем также описывается коммуникация между компонентами. Файрится Event и другие компоненты его получают. И все выглядит так естественно и просто... Пока ты не вспоминаешь про Events Up, Properties Down идею.
Как же так, в данном случае компоненты находятся в паралельных ветках (ведь каждый обернут в Card и LayoutItem), но Event-ы прекрасно принимаются и парится с Events Up, Properties Down вовсе не нужно.

как так? или Events Up, Properties Down - это просто иллюстрация как это может работать, но вовсе не обязательно это использовать? Или барьером для передачи Эвентов между ветками служат только кастомные компоненты (или только LWC кастомные компоненты), а стандартные компоненты не создают помех?

Может этот вопрос проще самому проверить, но там могут быть неочевидные детали, которые пока не обсудишь, так и не узнаешь.

Вот Трейлхед модуль [url=https://trailhead.salesforce.com/content/learn/modules/lightning-web-components-basics/handle-events-in-lightning-web-components]Lightning Web Components Basics[/url], в котором четко говорится, что Events Up, Properties Down, то есть для коммуникации между компонентами, находящихся в паралельных ветках, нужно передать данные сначала Events Up до какого-то (пра-) родительского компонента, а оттуда Properties Down в нужный компонент. Выглядит сурово, но логично. Впрочем, в LWC все выглядит сурово, но логично...

А вот другой Трейлхед модуль [url=https://trailhead.salesforce.com/content/learn/modules/sfdx_app_dev/sfdx_app_dev_build_app]App Development with Salesforce DX[/url], он уже про Aura.
И в нем также описывается коммуникация между компонентами. Файрится Event и другие компоненты его получают. И все выглядит так естественно и просто... Пока ты не вспоминаешь про [i]Events Up, Properties Down[/i] идею.
Как же так, в данном случае компоненты находятся в паралельных ветках (ведь каждый обернут в Card и LayoutItem), но  Event-ы прекрасно принимаются и парится с [i]Events Up, Properties Down[/i] вовсе не нужно. 

как так? или [i]Events Up, Properties Down[/i] - это просто иллюстрация как это может работать, но вовсе не обязательно это использовать? Или барьером для передачи Эвентов между ветками служат только кастомные компоненты (или только LWC кастомные компоненты), а стандартные компоненты не создают помех?


Den Brown
Выглядит сурово, но логично. Впрочем, в LWC все выглядит сурово, но логично...

Либо использовать из sf рецептов pubsub(устарело, но все еще работает), в разных комопнентах внутри одной страницы можно передавать events с значениями вдоль и поперек.

Либо чекнуть как работает https://developer.salesforce.com/docs/component-library/bundle/lightning-message-service/documentation (я не проверял, не было времени играться - но есть несколько вопросов, какие есть лимиты, считает ли сф эти лимиты как-то(как в платформ евентах например))

На своем проекте использовали микс всего и вся:


    pubsub - когда нужно из самой жопы одной ветки выдать информацию в другую ветку

    миксовали это с platform events - Но там идиотские лимиты на доставку и у клиеннтов эти лимиты очень быстро слетели(возможно был гдето косяк в кастомном коде), быстренько убрали это до лучших времен, когда будет время поресерчить

    ну и обычные this.dispatchEvent вверх, а property вниз

В ауре же изначально были верхнеуровневые application events + какие то стандартные события которые можно было отлавливать везде и всегда, в lwc такого не было, и можно было только эксперементировать и "костылить"

[quote="Den Brown"]Выглядит сурово, но логично. Впрочем, в LWC все выглядит сурово, но логично...[/quote]
Либо использовать из sf рецептов pubsub(устарело, но все еще работает), в разных комопнентах внутри одной страницы можно передавать events с значениями вдоль и поперек.

Либо чекнуть как работает https://developer.salesforce.com/docs/component-library/bundle/lightning-message-service/documentation (я не проверял, не было времени играться - но есть несколько вопросов, какие есть лимиты, считает ли сф эти лимиты как-то(как в платформ евентах например))

На своем проекте использовали микс всего и вся:
[list]
pubsub - когда нужно из самой жопы  одной ветки выдать информацию в другую ветку

миксовали это с platform events - Но там идиотские лимиты на доставку и у клиеннтов эти лимиты очень быстро слетели(возможно был гдето косяк в кастомном коде), быстренько убрали это до лучших времен, когда будет время поресерчить

ну и обычные this.dispatchEvent вверх, а property вниз

[/list]

В ауре же изначально были верхнеуровневые application events + какие то стандартные события которые можно было отлавливать везде и всегда, в lwc такого не было, и можно было только эксперементировать и "костылить"

Maxim Elets
В ауре же изначально были верхнеуровневые application events + какие то стандартные события которые можно было отлавливать везде и всегда, в lwc такого не было

если это так, то плохо.

это я еще описал варианты, когда кастомные компоненты собраны на крышей какого другого кастомного компонета. А что если это два кастомных компонента, выложенные на стандартные Home or FlexPage, как между ними наладить связь?

вот это

Maxim Elets
Либо чекнуть как работает https://developer.salesforce.com/docs/component-library/bundle/lightning-message-service/documentation

вроде вот здесь описано:
https://trailhead.salesforce.com/content/learn/projects/lwc-build-flexible-apps/inter-comp-events

я кстати и подумал, что это и есть Platform events, но получается, что это не так?

[quote="Maxim Elets"]В ауре же изначально были верхнеуровневые application events + какие то стандартные события которые можно было отлавливать везде и всегда, в lwc такого не было[/quote]

если это так, то плохо. 

это я еще описал варианты, когда кастомные компоненты собраны на крышей какого другого кастомного компонета. А что если это два кастомных компонента, выложенные на стандартные Home or FlexPage, как между ними наладить связь?

вот это 
[quote="Maxim Elets"]Либо чекнуть как работает https://developer.salesforce.com/docs/component-library/bundle/lightning-message-service/documentation [/quote]

вроде вот здесь описано:
https://trailhead.salesforce.com/content/learn/projects/lwc-build-flexible-apps/inter-comp-events

я кстати и подумал, что это и есть Platform events, но получается, что это не так?

Den Brown
я кстати и подумал, что это и есть Platform events, но получается, что это не так?

Вот у меня вопросы в принципе такие же, но очень похоже что это просто замена для обычных js events(по типу pubsub/application events), скорее всего без каких либо платных лимитов(надеюсь).

Не пробовали мы всё еще это новшество, но наверное стоило бы(да где взять время)

[quote="Den Brown"]я кстати и подумал, что это и есть Platform events, но получается, что это не так?[/quote]
Вот у меня вопросы в принципе такие же, но очень похоже что это просто замена для обычных js events(по типу pubsub/application events), скорее всего без каких либо платных лимитов(надеюсь).

Не пробовали мы всё еще это новшество, но наверное стоило бы(да где взять время)

оказывается на эту тему есть целый модуль
https://trailhead.salesforce.com/content/learn/projects/communicate-between-lightning-web-components

все как мы и поняли: для LWC - Events Up, Properties Down, а более сложных случаях - LMS
(но там еще есть возможность с родителя вызывать методы дочернего компонента, что есть не совсем "коммуникация", но взаимодействие)

LMS упоминается и в новом Platform Developer I Certification Maintenance (Winter '21) модуле:
https://trailhead.salesforce.com/content/learn/modules/platform-developer-i-certification-maintenance-winter-21/learn-whats-new-in-lightning-web-components-and-visualforce

Use Lightning message service to communicate across the DOM—between Visualforce pages, Aura components, and Lightning web components, including components in a utility bar.

в Maintenance модуле не ничего нового про Ауру, что как бы намекает...
да и вообще модуль очень "худой", новинок в разы меньше чем обычно...

оказывается на эту тему есть целый модуль
https://trailhead.salesforce.com/content/learn/projects/communicate-between-lightning-web-components

все как мы и поняли: для LWC - Events Up, Properties Down, а более сложных случаях - LMS
(но там еще есть возможность с родителя вызывать методы дочернего компонента, что есть не совсем "коммуникация", но взаимодействие)

LMS упоминается и в новом Platform Developer I Certification Maintenance (Winter '21) модуле:
https://trailhead.salesforce.com/content/learn/modules/platform-developer-i-certification-maintenance-winter-21/learn-whats-new-in-lightning-web-components-and-visualforce

Use Lightning message service to communicate across the DOM—between [b]Visualforce pages[/b], Aura components, and Lightning web components, including components in a utility bar. 

в Maintenance модуле не ничего нового про Ауру, что как бы намекает...
да и вообще модуль очень "худой", новинок в разы меньше чем обычно...