繁体   English   中英

如何在 Blazor WASM 中向多个侦听器广播 EventCallback?

[英]How do I broadcast an EventCallback to multiple listeners in Blazor WASM?

从概念上讲,我很难找出如何将事件广播到多个组件。 似乎 EventCallback 属性只能设置为一种方法。 基本上,我有一个服务运行基于 window 事件的方法,并且我希望多个不同的组件能够“订阅”此更改。

即使是指向有关如何完成此操作的文档的指针也将不胜感激

我看到你找到了一个可行的选择,但我可以直接回答你的问题。

Blazor 的EventCallbackEventCallback<T>是传统委托的包装器,传统委托已经完全支持您想要做的事情。 诀窍是在将其交给 Blazor 转换为EventCallback之前添加到他们的调用列表中。

这与向事件添加处理程序没有什么不同:

Func<string, Task>? MyDelegate { get; set;} = null;

void InitializeMyDelegate()
{
    MyDelegate += FirstHandler;
    MyDelegate += SecondHandler;
}

如果您使其可访问,其他类也可以添加到调用列表中。

完成后,只需照常将其交给 Blazor 即可:

<SomeComponent MyEvent="MyDelegate">
    // other stuff 
</SomeComponent>

每当SomeComponent的该实例调用MyEvent.InvokeAsync()时,您添加到MyDelegate的每个处理程序都将被调用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM