在下面从此页面中的图表中,显示了当通过调用OnInitializedAsync返回一个未完成的任务时,它将等待该任务,然后呈现组件。
然而,实际发生的情况似乎是在返回未完成的任务时立即呈现组件,然后再次呈现一次一旦未完成的任务完成。
页面后面的示例似乎证实了这一点。如果在调用OnInitializedAsync后没有立即呈现组件,而是仅在返回的任务完成后首次呈现,您将永远看不到"Loading..."消息。
OnParametersSetAsync的行为似乎也是相同的。当返回一个未完成的任务时,它会立即呈现一次,然后再次呈现一次该任务完成之后。
我是否误解了呈现生命周期,还是文档中有错误?
谢谢
然而,实际发生的情况似乎是在返回未完成的任务时立即呈现组件,然后再次呈现一次一旦未完成的任务完成。
![enter image description here](https://istack.dev59.com/4XRFF.webp)
OnParametersSetAsync的行为似乎也是相同的。当返回一个未完成的任务时,它会立即呈现一次,然后再次呈现一次该任务完成之后。
我是否误解了呈现生命周期,还是文档中有错误?
谢谢
@page "/fetchdata"
@using BlazorSample.Data
@inject WeatherForecastService ForecastService
<h1>Weather forecast</h1>
<p>This component demonstrates fetching data from a service.</p>
@if (forecasts == null)
{
<p><em>Loading...</em></p>
}
else
{
<table class="table">
<!-- forecast data in table element content -->
</table>
}
@code {
private WeatherForecast[]? forecasts;
protected override async Task OnInitializedAsync()
{
forecasts = await ForecastService.GetForecastAsync(DateTime.Now);
}
}
ForecastService.GetForecastAsync
时。第二次是在ForecastService.GetForecastAsync
返回时。当等待ForecastService.GetForecastAsync
时,控制权会移交给调用代码,并首次呈现控件以显示消息“Loading...”。当ForecastService.GetForecastAsync
返回时,方法StateHasChanged将被隐式调用,以重新呈现组件进行第二次渲染。请参见:https://github.com/dotnet/aspnetcore/blob/main/src/Components/Components/src/ComponentBase.cs - enet