ASP.Net 核心 Blazor 页面如何知道在异步数据获取器方法返回后刷新其内容?



问题不在于如何让它工作,而是它有效。我只是感兴趣,但无法找到后台发生的事情来使其工作。

主要示例是标准 Blazor 服务器 Web 应用模板,该模板具有"计数器"和"提取数据"组件。 在 fetchdata 组件中,有protected override async Task OnInitializedAsync()被调用,组件会呈现自身。如果 OnInitializedAsync(( 没有及时返回,渲染仍然会发生,在示例中只是写出加载...然后,当 OnInitializedAsync(( 实际完成时,组件会神奇地重新渲染,但是是什么导致了重新渲染呢?它是如何连接在一起的?

框架是否经常查看类的内存以确定是否需要重新渲染?只是在 OnInitializedAsync(( 调用之前有一个对页面呈现的调用,在等待它之后有一个调用吗?

这都是基于异步编程...

protected override async Task OnInitializedAsync()
{        
forecasts = await ForecastService.GetForecastAsync(DateTime.Now);
}

您提到的 OnInitializedAsync 方法有两个部分:同步和异步。当 OnInitializedAsync 方法开始执行时,将调用可等待的 GetForecastAsync 方法,控制权将生成给调用代码 Blazor 运行时,该代码开始呈现 UI,而不会延迟。这是第一次渲染组件。这也是为什么您必须在代码中签入预测变量不为 null 的原因。当 GetForecastAsync 返回并填充 forecasts 变量时,将执行更多代码(如果存在(到方法的末尾,之后组件将再次重新呈现,此时 forecasts 不为 null,因此将呈现表。当然,这是一个简单的解释。您可以通过查看执行以下操作的代码来逐步检查该过程: 一切都从这里开始。遵循应该不难。没有魔法

希望这有帮助...

最新更新