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

news/2025/2/25 14:14:36

一、条件渲染概述

  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.niftyadmin.cn/n/5865590.html

相关文章

解决双系统开机显示gnu grub version 2.06 Minimal BASH Like Line Editing is Supported

找了好多教程都没有用&#xff0c;终于解决了&#xff01;&#xff01;我是因为ubuntu分区的时候出问题了 问题描述&#xff1a; 双系统装好&#xff0c;隔天开机找不到引导项&#xff0c;黑屏显示下列 因为我用的D盘划分出来的部分空闲空间&#xff0c;而不是全部&#xff0c…

Oracle Fusion Middleware 12C安装 - 呆瓜式

前言 Oracle Fusion Middleware 简称 FMW&#xff0c;其涵盖Java EE、开发工具、集成服务、商业智能、协作和内容管理等。它用于SOA&#xff08;面向服务的架构&#xff09;的开发、部署和管理&#xff0c;并支持与第三方系统如IBM、Microsoft、SAP、EBS等集成。 核心作用 1…

Spring Boot中整合Flink CDC

Flink CDC&#xff08;Change Data Capture&#xff09;是Flink的一种数据实时获取的扩展&#xff0c;用于捕获数据库中的数据变化&#xff0c;并且通过实时流式处理机制来操作这些变化的数据&#xff0c;在Flink CDC中通过Debezium提供的数据库变更监听器来实现对MySQL数据库的…

Docker 部署 OnlyOffice 文档服务器

Docker 部署 OnlyOffice 文档服务器 前言一、准备工作二、设置变量和目录结构三、创建并运行 OnlyOffice 容器四、访问 OnlyOffice 文档服务器五、配置和管理总结 前言 OnlyOffice 是一个强大的开源文档编辑平台&#xff0c;支持文档、表格、演示文稿等文件格式的编辑。通过 D…

网络安全之Web后端Python

目录 一、安装使用PyCharm及Python 基础语法 1.PyCharm &#xff08;1&#xff09;安装python &#xff08;2&#xff09;安装PyCharm 2.Python基础语法 &#xff08;1&#xff09;打印&#xff08;输出&#xff09; &#xff08;2&#xff09;注释 &#xff08;3&#…

MyBatis在Spring配置文件中注册

Spring集成Mybatis的配置文件中&#xff0c; 1.引入jdbc.properties,是为了注册数据源。 2.注册数据源是为了引入SqlSessionFactoryBean。 3.SqlSessionFactoryBean才是真正Spring与Mybatis的桥梁&#xff0c;引入SqlSessionFactoryBean是为了操作Mapper。 4.所以第四步&am…

angular登录页

说明:登录 logindialog 效果图&#xff1a; step1: import { Component } from angular/core; import {FormGroup, FormControl, Validators, FormsModule, ReactiveFormsModule} from angular/forms; import { MatDialog } from angular/material/dialog; import { AlertDia…

FFmpeg进化论:从av_register_all手动注册到编译期自动加载的技术跃迁

介绍 音视频开发都知道 FFmpeg,因此对 av_register_all 这个 API 都很熟悉,但ffmpeg 4.0 版本开始就已经废弃了,是旧版本中用于全局初始化的重要接口。 基本功能 核心作用:av_register_all() 用于注册所有封装器(muxer)、解封装器(demuxer)和协议处理器(protocol),…