假设我想知道我的所有组件何时加载,以便我可以执行 X 操作。
在我的MainLayout.razor例子中我有这个
@inject MyService;
@Body
bool AllComponentsAreLoaded { get; set; }
protected override async Task OnInitializedAsync()
{
AllComponentsAreLoaded = false;
}
protected override async Task OnAfterRenderAsync(bool firstrender)
{
AllComponentsAreLoaded = true;
if (AllComponentsAreLoaded)
{
// Nice I can start X
}
}
Run Code Online (Sandbox Code Playgroud)
这段代码可以工作,但我的问题是其中有一些组件@Body未加载。将会OnAfterRenderAsync触发,但它会在所有组件完成渲染之前触发。
我如何知道所有组件都已完成渲染?
为此,您可以使用“NotifierService”,将其注入到每个组件可以调用的启动中(以下链接中的示例)。
https://learn.microsoft.com/en-us/aspnet/core/blazor/components?view=aspnetcore-3.1
例如,每个组件都会向该服务发送通知,让其知道它是否已加载。然后,主要的“主体”将在完成时收到通知(您必须在这里实现自己的逻辑)。
| 归档时间: |
|
| 查看次数: |
2239 次 |
| 最近记录: |