.NET 8 Blazor Web 应用程序模板是否有缺陷

问题描述 投票:0回答:1

获取天气页面数据的模板项目是否有缺陷,因为数据是在 OnInitializedAsync() 方法中检索的?

  • 在现实世界中,您可能希望进行预渲染。
  • 在获取信息时,您需要某种“正在加载...”指示器 数据。
  • 并假设获取数据是一个“长时间运行”的过程。

如果您刷新天气页面(或直接从浏览器请求)而不是使用其他页面的交互式(增强型)导航,则模板项目将获取数据两次

处理这种情况的一种“更好”的方法似乎是执行以下操作。 (我正在使用 WeatherService 来获取 WeatherForecast 数据)... protected override async Task OnAfterRenderAsync(bool firstRender) { if (firstRender) { forecasts = await weatherService.GetWeather(); StateHasChanged(); } await base.OnAfterRenderAsync(firstRender); }

这似乎是保证应用程序不会两次访问数据的最简单方法。

我错过了什么吗?

blazor .net-8.0
1个回答
0
投票
获取天气页面数据的模板项目是否有缺陷

是的,但不是因为这个原因。

这似乎是保证应用程序不会两次访问数据的最简单方法。

是的,但这只是因为在预渲染模式下没有调用
OnAfterRender


我错过了什么吗?

是的。
OnAfterRender

是 UI 事件,不是生命周期的一部分。

看到这个答案:

Blazor - 我应该在 OnInitializedAsync() 或 OnAfterRenderAsync(true) 中读取数据吗

这里有关于该主题的更详细的讨论:

https://shauncurtis.github.io/Posts/OnAfterRender.html

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.