Ваши сомнения относительно правильности использования вызовов asyn c на самом деле не связаны с методами жизненного цикла компонентов ...
То, что вы делаете, нормально, и должно работать. Если вы используете ключевое слово asyn c, ваш метод будет асинхронным ... Но вам не нужно вызывать метод StateHasChanged. Он вызывается автоматически, когда задействованы события пользовательского интерфейса и когда используется метод asyn c: если вы используете метод asyn c, вы должны дождаться вызываемого метода, например:
private async Task GetData()
{
forecasts = await httpClient.GetFromJsonAsync<WeatherForecast[]>("WeatherForecast");
}
Когда среда выполнения выполняет этот метод и замечает ключевое слово ожидания, оно передает управление вызывающему коду ... Когда метод GetFromJsonAsyn c возвращается, выполнение продолжается синхронно до конца метода ... Также метод StateHasChanged является вызывается автоматически, и ваш компонент подвергается повторной визуализации.
Единственная проблема, которую я обнаружил в вашем коде, - это вызов GetData () из установленного средства доступа. Это работает и все такое, но я бы вызвал GetData () из обработчика событий, установленного для выбора нового элемента (события изменения). . Но вы должны использовать ключевое слово await в своем методе GetData, поэтому вам нужно вызвать StateHasChanged вручную, без чего компонент не сможет узнать, когда вызов завершен. Думаю, если вы поместите await Task.CompletedTask;
, вы решите проблему.
Я действительно рассматривал возможность использования события OnChange, но мне нравится эстетика подхода привязки свойств
событие «изменение», да?
Какая эстетика? В любом случае компилятор создаст для вас другой код с атрибутом value и событием onchange.
Надеюсь, это поможет! Если вы застряли, дайте мне знать