微信小程序开发系列(二十三)·wxml语法·列表渲染wx:for和wx:key的使用

本文主要是介绍微信小程序开发系列(二十三)·wxml语法·列表渲染wx:for和wx:key的使用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

1.  简介

2.  wx:for的使用

3.  wx:key的使用


1.  简介

        列表渲染:就是指通过循环遍历一个数组或对象,将其中的每个元素渲染到页面上。

        在组件上使用 wx:for 属性绑定一个数组或对象,既可使用每一项数据重复渲染当前组件。每一项的变量名默认为 item,下标变量名默认为inde。

        在使用 wx:for 进行遍历的时候,建议加上 wx:key 属性,wx:key 的值以两种形式提供:

        字符串:代表需要遍历的array中item的某个属性,该属性的值需要是列表中唯一的字符串或数字,且不能动态改变。

        保留关键字*this:代表在 for 循环中的 item 本身,当 item 本身是一个唯一的字符串或者数字时可以使用。

注意事项:
如果不加 wx:key 会报一个warning,如果明确知道该列表是静态,即以后数据不会改变,或者不必关注其顺序,可以选择忽略。
在给 wx:key 添加属性值的时候,不需要使用双大括号语法,直接使用遍历的 array 中 item 的某个属性

2.  wx:for的使用

        找到profile.js文件,创建两个数组一个对象:


Page({data:{numList: [1,2,3],fruitList: [{ id: 1, name: '苹果' },{ id: 2, name: '柠檬' },{ id: 3, name: '西红柿' }],obj:{name: 'tom',age: 10}}})

        找到profile.wxml文件,对列表进行渲染,其中第一个<view> 标签使用了 wx:for 指令来遍历一个名为 numList 的数组,并在每次循环中通过 {{ item }} 和 {{ index }} 分别显示数组元素和索引值。这样可以动态地将数组中的元素依次显示在页面上,并显示它们的索引值。

简单来说:如果渲染的是数组,item:数组的每一项,index:下标

<view wx:for="{{  numList }}">{{  item }} - {{  index }}</view>

        第二个,<view> 标签使用了 wx:for 指令来遍历一个名为 obj 的对象(或者类似于对象的数据结构),同样通过 {{ item }} 和 {{ index }} 分别显示对象的值和键。这样可以动态地将对象中的键值对依次显示在页面上,并显示它们的键名。

简单来说:如果渲染的是对象,item:对象属性的值,index:对象属性

<view wx:for="{{  obj }}">{{  item }} - {{  index }}</view>

完整代码:


<!-- 如果需要进行列表渲染,需要使用 wx:for 属性 -->
<!-- 属性值需要使用双大括号进行包裹 -->
<!-- 每一项的变量名默认是 item -->
<!-- 每一项的下标的变量名是index --><!--  <view> 标签使用了 wx:for 指令来遍历一个名为 numList 的数组,并在每次循环中通过 {{ item }} 和 {{ index }} 分别显示数组元素和索引值。这样可以动态地将数组中的元素依次显示在页面上,并显示它们的索引值。 -->
<view wx:for="{{  numList }}">{{  item }} - {{  index }}</view><!-- <view> 标签使用了 wx:for 指令来遍历一个名为 obj 的对象(或者类似于对象的数据结构),同样通过 {{ item }} 和 {{ index }} 分别显示对象的值和键。这样可以动态地将对象中的键值对依次显示在页面上,并显示它们的键名。 -->
<view wx:for="{{  obj }}">{{  item }} - {{  index }}</view>

        不过此时我们会发现,程序报有警告:

3.  wx:key的使用

        此时需要往其中加入wx:key用来提高性能

wx:key 提升性能。 

wx:key 属性值有两种添加属性。 

1. 字符串,需要是遍历的数组中 item 的某个属性,要求该属性是列表中唯一的字符串或者数字,不能进行动态改变。 

2. 保留关键字 *this ,*this代表的是 item 本身,item 本身是唯一的字符串或者数字。

        找到profile.js文件,找到fruitList更改name里的内容,使用微软输入法苹果,柠檬,西红柿找到其图标:


Page({data:{numList: [1,2,3],fruitList: [{ id: 1, name: '🍎' },{ id: 2, name: '🍋' },{ id: 3, name: '🍅' }],obj:{name: 'tom',age: 10}}})

         找到profile.wxml文件,输入:

<view wx:for="{{ fruitList }}">{{ item.name }}</view><view wx:for="{{ numList }}">{{ item }}</view>

        wx:key 的属性值不需要使用大括号进行包裹,直接写遍历的数组中 item 的某个属性:

<!-- wx:key 的属性值不需要使用大括号进行包裹,直接写遍历的数组中 item 的某个属性 -->
<view wx:for="{{ fruitList }}" wx:key="id">{{ item.name }}</view><view wx:for="{{ numList }}" wx:key="this">{{ item }}</view>

        会发现此时警报已经消除: 

微信小程序开发_时光の尘的博客-CSDN博客

这篇关于微信小程序开发系列(二十三)·wxml语法·列表渲染wx:for和wx:key的使用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/786574

相关文章

Python使用Tenacity一行代码实现自动重试详解

《Python使用Tenacity一行代码实现自动重试详解》tenacity是一个专为Python设计的通用重试库,它的核心理念就是用简单、清晰的方式,为任何可能失败的操作添加重试能力,下面我们就来看... 目录一切始于一个简单的 API 调用Tenacity 入门:一行代码实现优雅重试精细控制:让重试按我

MySQL中EXISTS与IN用法使用与对比分析

《MySQL中EXISTS与IN用法使用与对比分析》在MySQL中,EXISTS和IN都用于子查询中根据另一个查询的结果来过滤主查询的记录,本文将基于工作原理、效率和应用场景进行全面对比... 目录一、基本用法详解1. IN 运算符2. EXISTS 运算符二、EXISTS 与 IN 的选择策略三、性能对比

使用Python构建智能BAT文件生成器的完美解决方案

《使用Python构建智能BAT文件生成器的完美解决方案》这篇文章主要为大家详细介绍了如何使用wxPython构建一个智能的BAT文件生成器,它不仅能够为Python脚本生成启动脚本,还提供了完整的文... 目录引言运行效果图项目背景与需求分析核心需求技术选型核心功能实现1. 数据库设计2. 界面布局设计3

使用IDEA部署Docker应用指南分享

《使用IDEA部署Docker应用指南分享》本文介绍了使用IDEA部署Docker应用的四步流程:创建Dockerfile、配置IDEADocker连接、设置运行调试环境、构建运行镜像,并强调需准备本... 目录一、创建 dockerfile 配置文件二、配置 IDEA 的 Docker 连接三、配置 Do

Android Paging 分页加载库使用实践

《AndroidPaging分页加载库使用实践》AndroidPaging库是Jetpack组件的一部分,它提供了一套完整的解决方案来处理大型数据集的分页加载,本文将深入探讨Paging库... 目录前言一、Paging 库概述二、Paging 3 核心组件1. PagingSource2. Pager3.

python中列表应用和扩展性实用详解

《python中列表应用和扩展性实用详解》文章介绍了Python列表的核心特性:有序数据集合,用[]定义,元素类型可不同,支持迭代、循环、切片,可执行增删改查、排序、推导式及嵌套操作,是常用的数据处理... 目录1、列表定义2、格式3、列表是可迭代对象4、列表的常见操作总结1、列表定义是处理一组有序项目的

python使用try函数详解

《python使用try函数详解》Pythontry语句用于异常处理,支持捕获特定/多种异常、else/final子句确保资源释放,结合with语句自动清理,可自定义异常及嵌套结构,灵活应对错误场景... 目录try 函数的基本语法捕获特定异常捕获多个异常使用 else 子句使用 finally 子句捕获所

C++11范围for初始化列表auto decltype详解

《C++11范围for初始化列表autodecltype详解》C++11引入auto类型推导、decltype类型推断、统一列表初始化、范围for循环及智能指针,提升代码简洁性、类型安全与资源管理效... 目录C++11新特性1. 自动类型推导auto1.1 基本语法2. decltype3. 列表初始化3

C++11右值引用与Lambda表达式的使用

《C++11右值引用与Lambda表达式的使用》C++11引入右值引用,实现移动语义提升性能,支持资源转移与完美转发;同时引入Lambda表达式,简化匿名函数定义,通过捕获列表和参数列表灵活处理变量... 目录C++11新特性右值引用和移动语义左值 / 右值常见的左值和右值移动语义移动构造函数移动复制运算符

Python对接支付宝支付之使用AliPay实现的详细操作指南

《Python对接支付宝支付之使用AliPay实现的详细操作指南》支付宝没有提供PythonSDK,但是强大的github就有提供python-alipay-sdk,封装里很多复杂操作,使用这个我们就... 目录一、引言二、准备工作2.1 支付宝开放平台入驻与应用创建2.2 密钥生成与配置2.3 安装ali