微信小程序 - 条件渲染(wx:if、hidden)与列表渲染(wx:for)

server/2025/2/28 17:58:39/

一、条件渲染概述

  1. 条件渲染用于根据特定条件决定是否渲染某部分内容

  2. html" title=微信html" title=小程序>小程序>微信html" title=小程序>小程序提供了两种方式实现条件渲染,分别是 wx:ifhidden


二、条件渲染

1、wx:if
(1)基本介绍
  1. wx:if 根据 condition 的真假决定是否渲染该组件及其子组件

  2. condition 为 true 时渲染,否则不渲染

  3. wx:if 是惰性的,初始条件为 false 时不会渲染,条件变为 true 时才会渲染

html"><view wx:if="{{【condition】}}">【content】</view>
(2)演示
html"><view wx:if="{{isShow}}">显示内容</view>
2、wx:elifwx:else
(1)基本介绍
  • wx:elifwx:else 用于多条件判断
html"><view wx:if="{{【condition1】}}">【content1】</view>
<view wx:elif="{{【condition2】}}">【content2】</view>
<view wx:else>【content3】</view>
(2)演示
html"><view wx:if="{{score >= 90}}">优秀</view>
<view wx:elif="{{score >= 60}}">及格</view>
<view wx:else>不及格</view>
3、hidden
(1)基本介绍
  1. hidden 根据 condition 的真假控制组件的显示与隐藏

  2. condition 为 true 时隐藏,false 时显示

  3. hidden 通过 CSS 的 display 属性控制显示状态

html"><view hidden="{{【condition】}}">【content】</view>
(2)演示
html"><view hidden="{{isHidden}}">隐藏内容</view>
4、wx:if 对比 hidden
(1)渲染机制
  1. wx:if 条件为 true 时渲染,否则不渲染

  2. hidden 始终渲染,仅通过 CSS 控制显示状态

(2)使用场景
  1. wx:if 条件变化较少,或组件渲染开销较大时使用

  2. hidden 需要频繁切换显示状态时使用


三、列表渲染概述

  1. 列表渲染用于根据数组或对象的数据动态生成多个组件

  2. html" title=微信html" title=小程序>小程序>微信html" title=小程序>小程序通过 wx:for 实现循环渲染


四、列表渲染

1、基本介绍
  • wx:for 根据数组或对象循环渲染组件
html"><view wx:for="{{【array】}}">{{index}}: {{item}}
</view>
html"><view wx:for="{{【object】}}">{{index}}: {{item}}
</view>
参数说明
array / object需要循环的数组 / 对象
item当前循环项(默认名称)
index当前循环项的索引(默认名称)
2、演示
  1. 数组列表渲染
html"><view wx:for="{{fruits}}">{{index + 1}}. {{item}}
</view>
javascript">Page({data: {fruits: ['苹果', '香蕉', '橙子']}
});
  1. 对象列表渲染
html"><view wx:for="{{list}}">{{item.id}} - {{item.name}}
</view>
javascript">Page({data: {list: [{ id: 1, name: '小明' },{ id: 2, name: '小红' },{ id: 3, name: '小刚' }]}
});
  1. 嵌套列表渲染
html"><view wx:for="{{classes}}"><text>{{item.name}} 班学生:</text><view wx:for="{{item.students}}">{{index + 1}}. {{item}}</view>
</view>
javascript">Page({data: {classes: [{name: '一年级',students: ['小明', '小红']},{name: '二年级',students: ['小刚', '小丽']}]}
});
3、自定义变量名
(1)基本介绍
  1. 可以通过 wx:for-item 自定义当前循环项变量名

  2. 可以通过 wx:for-index 自定义当前循环项的索引变量名

html"><view wx:for="{{【array / object】}}" wx:for-item="【currentItem】" wx:for-index="【currentIndex】">{{【currentIndex】}}: {{【currentItem】}}
</view>
(2)演示
html"><view wx:for="{{fruits}}" wx:for-item="fruit" wx:for-index="i">{{i + 1}}. {{fruit}}
</view>
javascript">Page({data: {fruits: ['苹果', '香蕉', '橙子']}
});

4、wx:key
(1)基本介绍
  • wx:key 用于指定列表中每个项的唯一标识符,以提高渲染性能
html"><view wx:for="{{【array】}}" wx:key="【key】">{{index}}: {{item}}
</view>
html"><view wx:for="{{【object】}}" wx:key="【key】">{{index}}: {{item}}
</view>
(2)适用场景
  1. wx:key 的适用于数据可能发生变化的列表,例如,排序、删除、新增

  2. 如果没有 wx:key,当列表数据发生变化时,会重新渲染整个列表,而不是只更新变化的部分

(3)演示
  1. 如果列表项是对象,可以使用对象的某个唯一属性(例如,id)作为 wx:key 的值
html"><view wx:for="{{users}}" wx:key="id">{{item.name}}
</view>
js">Page({data: {users: [{ id: 1, name: 'Alice' },{ id: 2, name: 'Bob' },{ id: 3, name: 'Charlie' }]}
});
  1. 如果列表项是简单数据类型(例如,字符串、数字),可以直接使用 *this(数组项本身)作为 wx:key 的值
html"><view wx:for="{{fruits}}" wx:key="*this">{{item}}
</view>
js">Page({data: {fruits: ['Apple', 'Banana', 'Orange']}
});
  1. 如果列表项没有唯一标识符,可以使用 index 作为 wx:key 的值
html"><view wx:for="{{fruits}}" wx:key="index">{{index + 1}}. {{item}}
</view>
js">Page({data: {fruits: ['Apple', 'Banana', 'Orange']}
});

http://www.ppmy.cn/server/171346.html

相关文章

laravel11设置中文语言包

安装中文语言包 Laravel 11 默认没有内置完整中文语言包&#xff0c;推荐使用第三方维护的完整翻译&#xff1a; # 通过 Composer 安装语言包 composer require laravel-lang/common --dev# 发布中文语言文件到项目 php artisan lang:add zh_CN这会自动将中文语言文件生成到 l…

基于EasyExcel封装的Excel工具类,支持高效导出和读取操作

以下是一个基于EasyExcel封装的Excel工具类&#xff0c;支持高效导出和读取操作&#xff1a; import com.alibaba.excel.EasyExcel; import com.alibaba.excel.ExcelWriter; import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.converters.Convert…

Vue.js 使用 snapshot 测试组件

Vue.js 使用 snapshot 测试组件 今天我们来聊聊如何使用 snapshot 测试组件&#xff0c;这是一种非常有效的方式来确保组件的输出没有意外的变化。Snapshot 测试可以捕获组件渲染的 HTML 结构&#xff0c;并在后续测试中与之前保存的快照进行比对&#xff0c;如果快照发生了变…

PyCharm 的使用 + PyCharm快捷键 + 切换中文界面

2025 - 02 - 27 - 第 62 篇 Author: 郑龙浩 / 仟濹 【PyCharm的使用】 文章目录 如何使用Pycharm1 新建工程&#xff0c;新建 .py 文件&#xff0c;运行2 常用快捷键3 其他快捷键 - DeepSeek 总结如下**代码编辑****导航与定位****查找与替换****运行与调试****代码重构****其…

几个api

几个api 原型链 可以阅读此文 Function instanceof Object // true Object instanceof Function // true Object.prototype.isPrototypeOf(Function) // true Function.prototype.isPrototypeOf(Object) // true Object.__proto__ Function.prototype // true Function.pro…

什么是GPU

GPU&#xff08;Graphics Processing Unit&#xff0c;图形处理器&#xff09;是一种专门设计用于处理图形和并行计算的处理器。最初&#xff0c;GPU主要用于图形渲染&#xff0c;如游戏、3D建模和视频处理。然而&#xff0c;随着技术的发展&#xff0c;GPU在通用计算领域的应用…

Linux相关知识(文件系统、目录树、权限管理)和Shell相关知识(字符串、数组)

仅供自学&#xff0c;请去支持javaGuide原版书籍。 1.Linux 1.1.概述 Linux是一种类Unix系统。 严格来讲&#xff0c;Linux 这个词本身只表示 Linux内核&#xff0c;单独的 Linux 内核并不能成为一个可以正常工作的操作系统。所以&#xff0c;就有了各种 Linux 发行版&#…

Ubuntu 下 nginx-1.24.0 源码分析 - ngx_init_cycle 函数 - 详解(3)

详解&#xff08;3&#xff09; 初始化路径数组&#xff08;paths&#xff09; n old_cycle->paths.nelts ? old_cycle->paths.nelts : 10;if (ngx_array_init(&cycle->paths, pool, n, sizeof(ngx_path_t *))! NGX_OK){ngx_destroy_pool(pool);return NULL;}ng…