Blazor渲染列表需用@foreach遍历集合,并配合@key提升更新效率、StateHasChanged()或ObservableCollection实现响应式更新,同时处理空状态与加载逻辑。
Blazor 渲染列表数据很简单,核心是用 @foreach 遍历集合,配合组件生命周期和状态更新机制即可实时响应变化。
这是最常用的方式。只要在 Razor 组件中定义一个可枚举的字段(比如 List 或 IEnumerable),就能直接遍历输出:
OnInitialized 或 OnParametersSet 中初始化@foreach (var item in items) { @item.Name }
当列表项可能增删改时,加上 @key 告诉 Blazor “哪个元素对应哪个数据”,避免不必要的 DOM 重建:
@key="item.Id"(推荐用唯一、稳定、非 null 的值,如数据库 ID)@foreach (var user in users) { }
Blazor 不会自动监听集合变化(比如 List.Add()),需要手动通知 UI 更新:
StateHasChanged() 强制重新渲染(适合简单场景)ObservableCollection —— 它自带 INotifyCollectionChanged,Blazor 会自动响应增删改await 后赋值并调用 StateHasChanged(),否则可能因异步时机问题不刷新实际项目中常要处理空列表、加载中、错误等状态:
@if (items == null) 显示加载中,@else if (!items.Any()) 显示“暂无数据”@foreach 外层套 @if 再进循环,而是先判断再统一渲染,逻辑更清晰... 提高复用性(需自定义组件)基本上就这些。关键不是语法多难,而是理解 Blazor 的渲染逻辑:数据变 →
通知刷新 → 比对 DOM → 差量更新。把 @key 和状态通知做对,列表就稳了。