【问题标题】:Blazor - event callback from descendantBlazor - 来自后代的事件回调
【发布时间】:2021-07-26 10:08:38
【问题描述】:

我创建了具有如下结构的测试 blazor 服务器应用程序:

    <parent_component>
      <child1_component/>
    </parent_component>

地点:

    <child1_component>
      <child2_component/>
    </child1_component>

    <child2_component>
      <child3_component/>
    </child2_component>

如何接收child3_component发送的parent_component事件回调? 嵌套组件的结构有意义吗? 它在“真实场景”中有用还是应该使用其他结构?

【问题讨论】:

    标签: c# blazor


    【解决方案1】:

    EventCallback 可以由承载声明 EventCallback 的组件的组件处理。

    换句话说,在您的结构中,child3 的事件可以被 child2 捕获。

    要将事件发送给父级,您有两种选择:

    1. 通过堆栈链接事件,以便父组件最终从子 1 接收 EventCallback。

    2. 使用事件广播服务。基本上是在启动时注册的服务,可以注入任何组件。 Child3 将调用“Send”方法将事件发送给监听者。事件广播服务将引发事件。 ParentComponent 需要向广播服务注册,它可以侦听相应的事件。

    这是一篇关于您的情况的不错的入门文章:

    https://chrissainty.com/3-ways-to-communicate-between-components-in-blazor/

    【讨论】:

    • 谢谢!状态容器(作为服务注入的简单类)可以解决问题。
    【解决方案2】:

    我也在找这个;我的用例:我想在我的主布局中拥有集中式确认对话框组件,我可以在其中调用组件需要的任何位置,因此可以在层次结构中的任何位置。

    Telerik 有一个预定义的对话框,但是当从另一个对话框(网格编辑弹出窗口)调用时它不能正常工作,所以需要使用他们的 TelerikWindow 组件。

    这是来自 Telerik Blazor 的内存状态容器服务示例;基本上将1个组件放在ConfirmationDialog的根目录中,然后通过注入的服务在想要使用ConfirmationDialog的组件中使用依赖注入。 https://github.com/telerik/blazor-ui/tree/master/common/message-box

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-31
      • 1970-01-01
      • 2021-10-08
      • 1970-01-01
      • 1970-01-01
      • 2010-09-07
      相关资源
      最近更新 更多