Blazor - 子组件的事件回调

3

我已经创建了一个测试 blazor server 应用程序,其结构如下:

    <parent_component>
      <child1_component/>
    </parent_component>

说明:

    <child1_component>
      <child2_component/>
    </child1_component>

并且

    <child2_component>
      <child3_component/>
    </child2_component>

如何在子组件child3_component中发送事件回调到父组件parent_component? 嵌套组件结构有意义吗? 在“实际场景”中它是否有用,或者应该使用其他结构?
2个回答

3
一个EventCallback可以由托管声明EventCallback的组件处理。
换句话说,在你的结构中,child3的事件可以被child2捕获。
要将事件传递给父级,您有两个选项:
1.通过堆栈链接事件,以便Parent组件最终从child1接收EventCallback。 2.使用事件广播服务。基本上是一项在启动时注册并可注入到任何组件中的服务。Child3将调用“Send”方法将事件发送给正在监听的人。事件广播服务将引发事件。ParentComponent需要注册以监听适当的事件。
这是一篇关于您情况的好起点文章:

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


1
谢谢!一个状态容器(作为服务注入的简单类)就可以解决问题。 - Piotr Dabalaga

1
我也在寻找类似的解决方案;我的用例是:我希望在我的主要布局中有一个集中式的confirmationDialog组件,在需要的任何组件中都可以调用,因此可以位于层次结构中的任何位置。
Telerik有预定义的对话框,但不幸的是当从另一个对话框(网格编辑弹出窗口)中调用时,它的效果不佳,因此需要使用他们的TelerikWindow组件。
这是来自Telerik Blazor的In-memory状态容器服务的示例。基本上将1个ConfirmationDialog组件放置在根目录中,并通过注入的服务在想要使用ConfirmationDialog的组件中使用依赖项注入。https://github.com/telerik/blazor-ui/tree/master/common/message-box

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接