Blazor WASM页面加载时无法显示OnInitialized获取的API数据问题
Blazor WASM 页面加载时无法显示API数据的解决方法
问题核心在于你用了async void版本的OnInitialized生命周期方法——Blazor无法追踪这类异步方法的完成状态,所以当API请求完成、message赋值后,组件不会自动触发重新渲染。热重载时组件重新初始化,此时message已有值,因此能正常显示。
直接按以下方式修改即可解决:
- 替换为Blazor官方推荐的
OnInitializedAsync异步生命周期方法(返回Task),框架会自动在异步操作完成后触发组件重新渲染。 - 可添加加载状态提示,避免页面加载时完全空白。
修改后的代码:
<p>@(message?.Name ?? "加载中...")</p> @code { public MessageDocumentationDto? message; protected override async Task OnInitializedAsync() { try { message = await Http.GetFromJsonAsync<MessageDocumentationDto>("api/Documentation/ViewRecord"); } catch (Exception e) { Console.WriteLine(e); // 可选:替换为友好的错误提示,避免程序崩溃 // message = new MessageDocumentationDto { Name = "数据加载失败" }; } } }
额外提示:
- 不要在异常处理中直接
throw,否则会导致程序崩溃,建议替换为用户可见的错误提示。 - 用
??空合并运算符实现加载提示,能让用户直观感知加载状态,提升体验。
内容的提问来源于stack exchange,提问作者Bhav
相关产品推荐
相关产品推荐

