假设我想知道我的所有组件何时加载,以便我可以执行 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
}
}
这段代码可以工作,但我的问题是@Body
中有未加载的组件。OnAfterRenderAsync
将触发,但它会在所有组件完成渲染之前触发。
我怎么知道所有组件都已完成渲染?
为此,您可以使用注入到每个组件可以调用的启动中的"NotifierService"(以下链接中的示例(。
https://learn.microsoft.com/en-us/aspnet/core/blazor/components?view=aspnetcore-3.1
例如,每个组件都会向此服务发送通知,该通知可以告知它是否已加载。然后,主"正文"将在完成时收到通知(您必须在此处实现自己的逻辑(。