Похоже, что StateHasChanged()
запускает повторный рендеринг компонента только после операции ожидания задачи (найдено здесь ).
Так что я хочу использовать только StateHasChanged
для повторного рендеринга вместо использования Task.delay
или Task.Run
.
Вот мой код:
protected async Task ClearSearch()
{
SearchTestCoupon = new Mechanic.Shared.TestCouponSearch();
IsBusy = true;
TestCouponGroups = new List<Mechanic.Shared.TestCouponGroup>();
StateHasChanged(); // << -------- **FIRST TIME**
//await Task.Delay(TimeSpan.FromSeconds(1));
await GetTestCouponGroups(SearchTestCoupon);
}
protected async Task GetTestCouponGroups(object args)
{
TestCouponGroups = await TestCouponService.GetTestCouponGroupsAsync(SearchTestCoupon);
IsRowSelected = false;
IsBusy = false;
StateHasChanged(); // << -------- **SECOND TIME**
}
Здесь я использую загрузчик, который активируется с помощью IsBusy
. Но он не работает в первый раз, когда StateHasChanged
вызывается, как указано в коде.
Но он воспроизводит компонент, как и ожидалось, во второй раз.
Я использовал Task.Delay
, но это нарушает другие мои функции, такие как очистка сетки и отображение искомых данных и т. д. c.