Как проверить, все ли компоненты загружены в приложение. net core blazor? - PullRequest
2 голосов
/ 11 февраля 2020

Допустим, я хочу знать, когда все мои компоненты загружены, чтобы я мог выполнить 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 сработает, но произойдет до того, как все компоненты завершат рендеринг.

Как узнать, что все компоненты выполнили рендеринг?

1 Ответ

1 голос
/ 11 февраля 2020

Для этого вы можете использовать NotifierService, который вы вставляете в автозагрузку, которую может вызывать каждый компонент (пример по ссылке ниже).

https://docs.microsoft.com/en-us/aspnet/core/blazor/components?view=aspnetcore-3.1

Например, каждый компонент отправляет уведомление этой службе, которое может сообщить ему, был ли он загружен или нет. Основное «Тело» будет уведомлено о его завершении (вам придется реализовать свой собственный лог c здесь).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...