我有一个 Blazor 应用程序,我将一个类 (NotificationClass) 注入到 MainLayout.razor。
NotificationClass 有一个 Errors 字符串属性。我的目标是使用此类绑定到某个组件,以便我可以显示客户端应用程序任何区域中发生的错误。最终的想法是在发生错误时显示 Toast 通知。
但到目前为止这似乎不起作用。
问题 是否可以将单例实例注入到应用程序的不同区域?
如果是这样,我想我需要实现一个 Changed 事件,以便我可以在 MainLayout.razor 中调用 StateHasChanged。
已解决
我能够通过完全按照我的怀疑去做来解决这个问题。我 引发了一个由 MainLayout 处理的事件。关于那个
事件已处理,我调用 this.StateHasChanged()。
是的,您可以拥有一个单例,通过多个组件上的 DI 获取对象,并在该组件上引发和侦听事件。例如,我使用它来显示 Toast:任何组件都可以引发带有 toast 文本的事件,主布局侦听该事件并显示 toast。
重要:
IDisposable
上实现 MainLayout
以在组件释放时释放事件订阅。InvokeAsync(StateHasChanged)
更新 UI,因为更改是通过事件进行的。