全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Blazor 数据加载时显示 Loading 提示的方法

Blazor中实现Loading提示需用bool isLoading状态控制UI显隐,加载前设true并调用StateHasChanged(),异常或完成后设false;可封装为LoadingWrapper组件自动管理任务状态;首次加载应在OnInitializedAsync中手动控制开关时机,并结合CancellationToken防重复提交。

在 Blazor 中实现数据加载时显示 Loading 提示,核心是利用组件状态(bool isLoading)控制 UI 的显隐,并配合异步操作的生命周期合理设置开关时机。

使用布尔状态 + 条件渲染

最常用也最直接的方式:定义一个 isLoading 字段,在调用异步方法前后手动更新它,再用 @if (isLoading) { ... } 控制提示内容。

  • @code 块中声明:private bool isLoading = false;
  • 在加载数据前设为 true,比如:isLoading = true; StateHasChanged();(确保 UI 立即响应)
  • try 块末尾或 finally 中设回 false,避免异常导致 Loading 残留
  • 模板中写:@if (isLoading) {

    Loading...

    }
    或套个骨架屏、Spinner 组件

封装成可复用的 Loading 包裹组件

把 Loading 逻辑抽离成独立组件(如 LoadingWrapper.razor),通过参数接收任务和子内容,自动管理状态。

  • 接受一个 Task 参数(如 [Parameter] public Task? DataTask { get; set; }
  • 内部用 @if (DataTask == null || DataTask.IsCompleted == false) 判断是否正在加载
  • 子内容用 [Parameter] public RenderFragment? ChildContent { get; set; } 接收,只在加载完成时渲染
  • 用法示例:

    数据内容

结合 OnInitializedAsync 生命周期处理首次加载

页面首次加载数据通常放在 OnInitializedAsync,这里要特别注意:不能只靠 await LoadDataAsync(),否则 Loading 状态可能来不及刷新。

  • 推荐写法:先设 isLoading = true,再 await LoadDataAsync(),最后 isLoading = false
  • 如果数据加载失败,建议同时设置错误信息并保持 isLoading = false,避免界面卡死
  • 不建议在 OnParametersSetAsync 里重复触发加载,除非明确需要响应参数变化

进阶:用 CancellationToken 支持取消与防重复提交

当用户快速多次点击加载按钮,或导航离开页面时,应避免无效请求和状态错乱。

  • 在方法签名中加入 CancellationToken cancellationToken
  • 调用 HTTP 客户端时传入该 token,如 httpClient.GetAsync(url, cancellationToken)
  • DisposeOnAfterRender 中检查是否已取消,必要时清理 pending 状态
  • 按钮可绑定 disabled="@isLoading" 防重复点击

基本上就这些。不需要第三方库也能做得清晰可靠,关键是状态更新时机要准、异常路径要覆盖、用户体验要连贯。


# app  # ai  # NULL  # if  # 封装  # try  # Token  # bool  # public  # private  # finally  # 异步  # http  # ui  # 加载  # 首次  # 进阶  # 放在  # 不需要  # 也能  # 设为  # 布尔  # 做得  # 只在 


相关文章: 关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)  小型网站制作HTML,*游戏网站怎么搭建?  C++如何编写函数模板?(泛型编程入门)  网站制作新手教程,新手建设一个网站需要注意些什么?  如何快速搭建高效WAP手机网站?  网站建设制作、微信公众号,公明人民医院怎么在网上预约?  如何选择长沙网站建站模板?H5响应式与品牌定制哪个更优?  建站之星安全性能如何?防护体系能否抵御黑客入侵?  成都网站制作公司哪家好,四川省职工服务网是做什么用?  济南专业网站制作公司,济南信息工程学校怎么样?  *服务器网站为何频现安全漏洞?  网页制作模板网站推荐,网页设计海报之类的素材哪里好?  如何快速登录WAP自助建站平台?  建站之星安装后如何配置SEO及设计样式?  如何通过cPanel快速搭建网站?  北京制作网站的公司排名,北京三快科技有限公司是做什么?北京三快科技?  建站之星2.7模板快速切换与批量管理功能操作指南  如何快速生成可下载的建站源码工具?  网站制作话术技巧,网站推广做的好怎么话术?  北京专业网站制作设计师招聘,北京白云观官方网站?  如何选择香港主机高效搭建外贸独立站?  如何在阿里云完成域名注册与建站?  建站之星安装步骤有哪些常见问题?  c++23 std::expected怎么用 c++优雅处理函数错误返回【详解】  建站之星×万网:智能建站系统+自助建站平台一键生成  三星网站视频制作教程下载,三星w23网页如何全屏?  如何高效利用200m空间完成建站?  如何在IIS中新建站点并解决端口绑定冲突?  深圳网站制作培训,深圳哪些招聘网站比较好?  平台云上自主建站:模板化设计与智能工具打造高效网站  红河网站制作公司,红河事业单位身份证如何上传?  黑客如何利用漏洞与弱口令入侵网站服务器?  如何批量查询域名的建站时间记录?  Android滚轮选择时间控件使用详解  清除minerd进程的简单方法  如何续费美橙建站之星域名及服务?  如何在宝塔面板中创建新站点?  mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?  如何在Golang中处理模块冲突_解决依赖版本不兼容问题  网站制作专业公司有哪些,如何制作一个企业网站,建设网站的基本步骤有哪些?  建站之星各版本价格是多少?  网站制作公司排行榜,抖音怎样做个人官方网站  JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)  如何通过宝塔面板实现本地网站访问?  如何挑选高效建站主机与优质域名?  建站VPS推荐:2025年高性能服务器配置指南  台州网站建设制作公司,浙江手机无犯罪记录证明怎么开?  如何选择CMS系统实现快速建站与SEO优化?  在线ppt制作网站有哪些,请推荐几个好的课件下载的网站?  如何在IIS中新建站点并配置端口与IP地址? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。