Как узнать, когда мне нужно вызвать StateHasChanged () в Blazor?
В типичном сценарии, скажем, я загружаю данные и хочу, чтобы кнопка «Загрузить» была отключена во время загрузки , Так что, возможно, у меня есть следующее. Поведение, которое я вижу, заключается в том, что кнопка будет отображаться включенной во время начальной загрузки, если я не вызову base.StateHasChanged()
в строке 17; однако после этого, если я нажму «загрузить», кнопка будет отключена во время загрузки, а затем станет активной, как и ожидалось. Так почему же это не работает при вызове OnInitializedAsyn c? Есть ли альтернативный подход, который позволил бы мне опустить StateHasChanged ()?
@inject HttpClient Http
<div class="my-component">
<button disabled="@(LoadingTask?.IsCompleted == false)" @onclick="LoadData">Load</button>
...
</div>
@code {
protected override async Task OnInitializedAsync() => await LoadData();
private Task<Thing[]>? LoadingTask { get; set; }
private Thing[] Data { get; set; } = new Thing[0];
private async Task LoadData()
{
LoadingTask = Http.GetJsonAsync<Thing[]>(url);
// Line 17: I shouldn't need to call base.StateHasChanged() here, right?
funds = await LoadingTask;
HasLoaded = true;
}
}