Blazor @foreach 循环渲染集合方法

幻夢星雲
发布: 2025-12-23 10:58:02
原创
752人浏览过
@foreach 渲染集合最直接但无键值跟踪,易致 UI 错误;应初始化为空集合而非 null,基础写法为 @foreach (var item in Items) { @item },需索引时用 @for。

blazor @foreach 循环渲染集合方法

Blazor 中用 @foreach 渲染集合是最直接的方式,但要注意它不自带键值跟踪,容易在集合更新时引发 UI 错误或状态丢失。

基础写法:安全渲染简单列表

确保集合非 null,避免运行时异常。推荐用空集合初始化,而不是 null。

  • @code 块中定义:private List<string> Items = new();</string>
  • 模板中使用:@foreach (var item in Items) { <div>@item</div> }
  • 若需索引,改用 @for (int i = 0; i ,更可控

避免重复渲染问题:用 @key 指定唯一标识

@foreach 默认按位置匹配 DOM 节点,添加/删除中间项会导致后续元素重用错误的组件实例(比如输入框失焦、状态错乱)。

  • 给每个循环项加上 @key,指向稳定唯一的值(如 ID):
    @foreach (var user in Users) { <usercard user="@user"></usercard> }
  • 不要用 @key="user.Name" 这类可能重复或变化的字段
  • 若没有 ID,可用 @key="Guid.NewGuid()"(仅限一次性静态列表,不适用于可更新场景)

配合状态更新:别直接修改原集合引用

Blazor 组件靠引用变化触发重新渲染。直接调用 Items.Add() 不会自动刷新界面,除非显式调用 StateHasChanged() 或用新集合替换。

ghiblitattoo
ghiblitattoo

用AI创造独特的吉卜力纹身

ghiblitattoo 175
查看详情 ghiblitattoo
  • 推荐方式:生成新集合并赋值,触发自动重渲染
    Items = new List<string>(Items) { "New Item" };</string>
  • 或手动通知:Items.Add("New Item"); StateHasChanged();
  • IEnumerable 类型,@foreach 会在每次渲染时重新枚举,注意性能和副作用(如 LINQ 查询未缓存)

替代方案:考虑 @bind + InputSelect 或虚拟滚动

当集合很大(如上千项)或需要交互筛选时,@foreach 可能卡顿。

  • 下拉选择用 <inputselect tvalue="string"></inputselect> 更轻量
  • 长列表建议用第三方库(如 Radzen.BlazorVirtualize 组件)或原生 <virtualize></virtualize>(.NET 6+)
  • <virtualize items="@Items">...</virtualize> 自动只渲染可视区域,大幅提升性能

基本上就这些。@foreach 简单好用,关键在加 @key、换引用、避坑集合变更逻辑。

以上就是Blazor @foreach 循环渲染集合方法的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号