微信小程序 - 条件渲染(wx:if、hidden)与列表渲染(wx:for)
一、条件渲染概述
-
条件渲染用于根据特定条件决定是否渲染某部分内容
-
微信小程序提供了两种方式实现条件渲染,分别是
wx:if、hidden
二、条件渲染
1、wx:if
(1)基本介绍
-
wx:if根据condition的真假决定是否渲染该组件及其子组件 -
condition为 true 时渲染,否则不渲染 -
wx:if是惰性的,初始条件为 false 时不会渲染,条件变为 true 时才会渲染
<view wx:if="{{【condition】}}">【content】</view>
(2)演示
<view wx:if="{{isShow}}">显示内容</view>
2、wx:elif 与 wx:else
(1)基本介绍
wx:elif和wx:else用于多条件判断
<view wx:if="{{【condition1】}}">【content1】</view>
<view wx:elif="{{【condition2】}}">【content2】</view>
<view wx:else>【content3】</view>
(2)演示
<view wx:if="{{score >= 90}}">优秀</view>
<view wx:elif="{{score >= 60}}">及格</view>
<view wx:else>不及格</view>
3、hidden
(1)基本介绍
-
hidden根据condition的真假控制组件的显示与隐藏 -
condition为 true 时隐藏,false 时显示 -
hidden通过 CSS 的 display 属性控制显示状态
<view hidden="{{【condition】}}">【content】</view>
(2)演示
<view hidden="{{isHidden}}">隐藏内容</view>
4、wx:if 对比 hidden
(1)渲染机制
-
wx:if条件为 true 时渲染,否则不渲染 -
hidden始终渲染,仅通过 CSS 控制显示状态
(2)使用场景
-
wx:if条件变化较少,或组件渲染开销较大时使用 -
hidden需要频繁切换显示状态时使用
三、列表渲染概述
-
列表渲染用于根据数组或对象的数据动态生成多个组件
-
微信小程序通过
wx:for实现循环渲染
四、列表渲染
1、基本介绍
wx:for根据数组或对象循环渲染组件
<view wx:for="{{【array】}}">{{index}}: {{item}}
</view>
<view wx:for="{{【object】}}">{{index}}: {{item}}
</view>
| 参数 | 说明 |
|---|---|
| array / object | 需要循环的数组 / 对象 |
| item | 当前循环项(默认名称) |
| index | 当前循环项的索引(默认名称) |
2、演示
- 数组列表渲染
<view wx:for="{{fruits}}">{{index + 1}}. {{item}}
</view>
Page({data: {fruits: ['苹果', '香蕉', '橙子']}
});
- 对象列表渲染
<view wx:for="{{list}}">{{item.id}} - {{item.name}}
</view>
Page({data: {list: [{ id: 1, name: '小明' },{ id: 2, name: '小红' },{ id: 3, name: '小刚' }]}
});
- 嵌套列表渲染
<view wx:for="{{classes}}"><text>{{item.name}} 班学生:</text><view wx:for="{{item.students}}">{{index + 1}}. {{item}}</view>
</view>
Page({data: {classes: [{name: '一年级',students: ['小明', '小红']},{name: '二年级',students: ['小刚', '小丽']}]}
});
3、自定义变量名
(1)基本介绍
-
可以通过
wx:for-item自定义当前循环项变量名 -
可以通过
wx:for-index自定义当前循环项的索引变量名
<view wx:for="{{【array / object】}}" wx:for-item="【currentItem】" wx:for-index="【currentIndex】">{{【currentIndex】}}: {{【currentItem】}}
</view>
(2)演示
<view wx:for="{{fruits}}" wx:for-item="fruit" wx:for-index="i">{{i + 1}}. {{fruit}}
</view>
Page({data: {fruits: ['苹果', '香蕉', '橙子']}
});
4、wx:key
(1)基本介绍
wx:key用于指定列表中每个项的唯一标识符,以提高渲染性能
<view wx:for="{{【array】}}" wx:key="【key】">{{index}}: {{item}}
</view>
<view wx:for="{{【object】}}" wx:key="【key】">{{index}}: {{item}}
</view>
(2)适用场景
-
wx:key的适用于数据可能发生变化的列表,例如,排序、删除、新增 -
如果没有
wx:key,当列表数据发生变化时,会重新渲染整个列表,而不是只更新变化的部分
(3)演示
- 如果列表项是对象,可以使用对象的某个唯一属性(例如,id)作为
wx:key的值
<view wx:for="{{users}}" wx:key="id">{{item.name}}
</view>
Page({data: {users: [{ id: 1, name: 'Alice' },{ id: 2, name: 'Bob' },{ id: 3, name: 'Charlie' }]}
});
- 如果列表项是简单数据类型(例如,字符串、数字),可以直接使用
*this(数组项本身)作为wx:key的值
<view wx:for="{{fruits}}" wx:key="*this">{{item}}
</view>
Page({data: {fruits: ['Apple', 'Banana', 'Orange']}
});
- 如果列表项没有唯一标识符,可以使用 index 作为
wx:key的值
<view wx:for="{{fruits}}" wx:key="index">{{index + 1}}. {{item}}
</view>
Page({data: {fruits: ['Apple', 'Banana', 'Orange']}
});
相关文章:
微信小程序 - 条件渲染(wx:if、hidden)与列表渲染(wx:for)
一、条件渲染概述 条件渲染用于根据特定条件决定是否渲染某部分内容 微信小程序提供了两种方式实现条件渲染,分别是 wx:if、hidden 二、条件渲染 1、wx:if (1)基本介绍 wx:if 根据 condition 的真假决定是否渲染该组件及其子组件 condit…...
【STL】4.<list>
list 前言list容器一.list初始化二.常用函数三.排序 总结 前言 stl系列主要讲述有关stl的文章,使用STL可以大大提高程序开发的效率和代码的可维护性,且在算法比赛中,STL可以帮助我们更方便地实现各种算法。提高我们的效率。 list容器 要使用…...
华为AP 4050DN-HD的FIT AP模式改为FAT AP,家用FAT基本配置
在某鱼买了两台华为AP 4050DN-HD , AP是二手的 , 在AC上上过线 , 所以就不能开机自选为FIP模式了 我没有AC无线控制器 , 就是买一个自己玩 , AP又是FIT瘦AP模式 ,所以我就想把AP的瘦AP模式改为FAT胖AP模式 1. 准备工作 1.1下载好对应软件,进入到 企业业务网站去下…...
vue 设置生产 开发 测试环境
在 Vue.js 中,可以通过配置不同的环境变量来区分生产、开发和测试环境的请求。一般情况下,我们使用 webpack 或 Vite 进行构建,它们都支持环境变量的配置。 以下是如何在 Vue 项目中配置不同环境的请求: 1. 配置 .env 文件 在项…...
vue3+ts+uniapp+unibest 微信小程序(第二篇)—— 图文详解自定义背景图页面布局、普通页面布局、分页表单页面布局
文章目录 简介一、自定义背景图布局1.1 效果预览1.2 实现思路1.3 custom-page 组件全量代码1.4 页面使用 二、普通页面布局2.1 效果预览2.2 实现思路2.3 公共样式部分2.4 页面使用 三、分页表单页面布局3.1 效果预览3.2 实现思路3.3 页面代码 简介 开发工具:VsCode…...
虚拟机缩放比例问题处理
上班打开虚拟机的样子。 最开始判断可能是vmtools 异常重启安装后发现没有效果 通过 xrandr 功能查询显示器信息获取显示器名 设置显示器 同时设置分辨率 也可以同时设置刷新率 注意下图中设置的关键字...
bean的管理-03.第三方bean
一.第三方bean的定义 对于我们自己定义的类,如果想要将其注入到IOC容器当中,可以使用Component,Controller,Service,Repository注解。但是对于第三方的类来说,并不能使用以上注解来定义,因此我…...
【Python 入门基础】—— 人工智能“超级引擎”,AI界的“瑞士军刀”,
欢迎来到ZyyOvO的博客✨,一个关于探索技术的角落,记录学习的点滴📖,分享实用的技巧🛠️,偶尔还有一些奇思妙想💡 本文由ZyyOvO原创✍️,感谢支持❤️!请尊重原创…...
DeepSeek-R1-Zero:基于基础模型的强化学习
注:此文章内容均节选自充电了么创始人,CEO兼CTO陈敬雷老师的新书《自然语言处理原理与实战》(人工智能科学与技术丛书)【陈敬雷编著】【清华大学出版社】 文章目录 DeepSeek大模型技术系列四DeepSeek大模型技术系列四》DeepSeek-…...
(dp 买入股票的最佳时机)leetcode 121
题目 题解的dp数组 0列是负数,这里我改成正数不再相加而是相减获取利润 class Solution { public:int maxProfit(vector<int>& prices) {int nprices.size();vector<vector<int>>dp(n,vector<int>(2));dp[0][0]prices[0];dp[0][1]0;//0…...
由 Mybatis 源码畅谈软件设计(三):简单查询 SQL 执行流程
大家好,我是 方圆。SQL 查询是 Mybatis 中的核心流程,本节我们来介绍简单 SQL 的执行流程,过程会比较长,期间会认识很多重要的组件,比如 SqlSession、四大处理器(Executor、StatementHandler、ParameterHan…...
项目实践 之 pdf简历的解析和填充(若依+vue3)
文章目录 环境背景最终效果前端讲解左侧模块解析右侧上传模块解析前端步骤 后端讲解代码前端 环境背景 若依前后端分离框架 vue最后边附有代码哦 最终效果 前端讲解 左侧模块解析 1、左侧表单使用el-form 注意: 1、prop出现的字段,需要保证是该类所…...
C语言机试编程题
编写版本:vc2022 1.求最大/小值 #include<stdio.h> int main(){int a[50],n;int max, min;printf("请输入您要输入几个数");scanf_s("%d", &n);printf("请输入您要比较的%d个数\n",n);for (int i 0; i<n; i) {scanf_…...
lowagie(itext)老版本手绘PDF,包含页码、水印、图片、复选框、复杂行列合并、行高设置等。
入口类:exportPdf package xcsy.qms.webapi.service;import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.alibaba.nacos.common.utils.StringUtils; import com.ibm.icu.text.RuleBasedNumberFormat; import com.lowagie…...
第002文-kali虚拟机安全与网络配置
1、kali系统介绍 kali是一个基于Linux kernel的操作系统,由BackTrack(简称BT)发展而来。BackTrack是2006年推出的一个用于渗透测试及黑客攻防的专用平台,基于Knoppix(linux的一个发行版)开发。BackTrack版本周期:2006年的起始版本BackTrack …...
软件工程复试专业课-软件生命周期
文章目录 软件过程模型瀑布模型模型图特点优缺点改进后的瀑布模型 快速原型模型模型图优缺点 增量模型(迭代-递增模型)原型图与瀑布和快速原型的区别优缺点风险更大的增量模型 螺旋模型简介模型图优缺点 喷泉模型模型图优缺点 编码修补模型敏捷过程优缺点…...
DILLEMA:扩散模型+大语言模型,多模态数据增强框架
引言:深度学习模型的鲁棒性测试需要全面且多样化的测试数据。现有的方法通常基于简单的数据增强技术或生成对抗网络,但这些方法在生成真实且多样化的测试数据集方面存在局限性。为了克服这些限制,DILLEMA框架应运而生,旨在通过结合…...
OpenBMC:BmcWeb app获取socket
OpenBMC:BmcWeb app.run-CSDN博客 app对象在run函数中调用了setupSocket() static std::vector<Acceptor> setupSocket() {std::vector<Acceptor> acceptors;char** names = nullptr;int listenFdCount = sd_listen_fds_with_names(0, &names);BMCWEB_LOG_DE…...
突破加速度计的精度与量程瓶颈:HEROS-GAN技术
在当今科技飞速发展的背景下,低成本传感器的应用范围日益扩大。然而,低成本加速度计由于其固有的限制——如信号噪声显著和动态范围狭窄——往往难以满足高精度应用场景的需求。哈尔滨工业大学的研究团队最近提出了一项名为HEROS-GAN(Honed-E…...
C++程序员内功修炼——Linux C/C++编程技术汇总
在软件开发的宏大版图中,C 语言宛如一座巍峨的高山,吸引着无数开发者攀登探索。而 Linux 操作系统,以其开源、稳定、高效的特性,成为了众多开发者钟爱的开发平台。将 C 与 Linux 相结合,就如同为开发者配备了一把无坚不…...
苍穹外卖-阿里云OSS文件上传
苍穹外卖-阿里云OSS文件上传 一、阿里云OSS简介**获取AccessKey**获取enpoint 二、代码实现1 引入依赖2 定义OSS相关配置2.1 application-dev.yml2.2 application.yml 3 读取OSS配置3.1 AliOssProperties 4 生成OSS工具类对象4.1 AliOssUtil4.2 OssConfiguration2.5 CommonCont…...
C# 中 Array、ArrayList 和 List 的比较
C# 中 Array、ArrayList 和 List 的比较 在 C# 中,Array、ArrayList 和 List<T> 都用于存储和管理数据集合,但它们在类型安全性、性能、灵活性和使用场景上存在显著差异。以下是对这三种集合的详细比较: 1. 概述 特性ArrayArrayList…...
DeepSeek 提示词:常见指令类型
🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编…...
商业AI模型新篇章:Granite 3.2引领行业创新
摘要 Granite 3.2 是一款专为商业环境设计的人工智能模型,旨在提高AI驱动应用的信任度和可扩展性。该模型从零开始构建,采用最新的密集型架构,支持12种语言,覆盖11个不同领域。通过其先进的技术,Granite 3.2 不仅增强了…...
Spring boot中的@ConfigurationProperties注解
Spring boot中的ConfigurationProperties注解 ConfigurationProperties 是 Spring Boot 提供的一个强大注解,用于将配置文件(如 application.properties 或 application.yml)中的配置绑定到一个 Java 对象中。它不仅简化了配置管理ÿ…...
Rust中的异步编程:构建简单的网页爬虫
一、什么是Rust中的Futures和Async? 在Rust中,异步编程基于future(未来)的概念。一个future表示一个当前可能不可用,但将来某个时候可以获得的值。Rust中的Future特征定义了这一概念,任何实现了该特征的类…...
springai系列(二)从0开始搭建和接入azure-openai实现智能问答
文章目录 前言1.从0开始搭建项目2.进入微软openai申请key3.配置application.yaml4.编写controller5.测试源码下载地址总结 前言 之前使用openai的官网的api需要科学上网,但是我们可以使用其他的代理间接实现使用chatgpt的相关模型,解决这个问题。比如:本…...
flutter 局部刷新控件Selector源码实现原理
Flutter 中的 Selector 组件是 provider 包提供的一个优化工具,用于在状态管理中仅选择所需数据片段,避免不必要的 Widget 重建。其实现原理基于以下几个关键点: 1. 核心设计目标 选择性重建:仅当特定数据变化时触发 Widget 重建&…...
Eclipse 编译项目指南
Eclipse 编译项目指南 引言 Eclipse 是一款功能强大的集成开发环境(IDE),广泛用于Java、C/C、Python等多种编程语言的开发。在Eclipse中编译项目是进行软件开发的基础步骤。本文将详细介绍如何在Eclipse中编译项目,包括项目设置…...
Go在1.22版本修复for循环陷阱
记录 前段时间升级Go版本碰到一个大坑,先记录。 先上代码案例: func main() {testClosure() }func testClosure() {for i : 0; i < 5; i {defer func() {fmt.Println(i)}()} }在1.22之下(不包括1.22)版本: 输出的…...
