微信小程序开发(实战案例):本地生活 - 列表页面开发(动态渲染处理)、节流防抖(节流阀应用)

本文主要是介绍微信小程序开发(实战案例):本地生活 - 列表页面开发(动态渲染处理)、节流防抖(节流阀应用),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 本地生活 - 列表页面开发
      • 一、将九宫格分类换成navigator组件
      • 二、动态设置商品列表页的 title
      • 三、动态渲染商品列表页面
      • 四、上拉触底加载数据
      • 五、添加Loading加载效果
      • 六、数据加载节流防抖处理

本地生活 - 列表页面开发

在这里插入图片描述

导入我们上次写的 本地生活 - 首页开发的项目

  • 运行起来后我们先创建一个 商品列表页面

在这里插入图片描述

一、将九宫格分类换成navigator组件

<!-- 九宫格区域 -->
<view class="grid-list"><navigator class="grid-item" wx:for="{{gridList}}" wx:key="id" url="/pages/shoplist/shoplist?id={{ item.id }}&name={{ item.name }}"><image src="{{item.icon}}"></image><text>{{item.name}}</text></navigator>
</view>
  • 这一步是为了实现点击调转到指定的页面! 也就是 shoplist 页面!

二、动态设置商品列表页的 title

第一步:创建一个动态的 title 变量

	 * 页面的初始数据*/data: {// title 默认为空titleName: ""},

第二步:在 商品页面加载的时候动态的获取和设置 title 变量

	/*** 生命周期函数--监听页面加载   options是导航参数对象*/onLoad(options) {// 页面一加载就设置 title 动态变量this.setData({titleName: options.name})},
  • 这里 我们将 传递过来的参数对象中的 name (商品分类名字)设置给我们data数据对象中的动态 title 变量

第三步: 调用 api 动态设置页面标题

	/*** 生命周期函数--监听页面初次渲染完成*/onReady() {// 页面架子渲染完毕,触发的生命周期函数wx.setNavigationBarTitle({// 访问 动态的 titletitle: this.data.titleName})},
  • 这样就能实现根据我们点击的商品进行跳转,同时动态的渲染 title

在这里插入图片描述

三、动态渲染商品列表页面

在这里插入图片描述

代码示例:

onLoad(options) {// 页面一加载就 动态获取参数this.setData({id: options.id,titleName: options.name})// 商品数据请求this.getShopData()},// 商品请求方法getShopData() {// 发送网络请求 这里要求动态路径传递 idwx.request({url: `https://applet-base-api-t.itheima.net/categories/${this.data.id}/shops`,method: 'GET',data: {// 请求第几页的数据_page: this.data.page,// 每页请求几条数据_limit: this.data.pageSize},success: (successResult) => {console.log(successResult)this.setData({// 将获取到的商品信息存到 商品数组中shopList: [...this.data.shopList, ...successResult.data],// 这里是获取商品的总数,因为参数名有横线,所以这里用数组包字符串自动解析,并且转为数字类型total: successResult.header['X-Total-Count'] - 0})}})},

成功后处理数据
在这里插入图片描述


四、上拉触底加载数据

  • 通过手指向上滑动进行加载数据
	/*** 页面上拉触底事件的处理函数*/onReachBottom() {// 如果节流阀请求未结束,则不允许在此重复发送请求if (this.data.isLoading) returnthis.getShopData();},

五、添加Loading加载效果

	// 商品请求方法getShopData() {this.setData({isLoading: true})// 加载 Loadingwx.showLoading({title: '玩命加载中...',})// 发送网络请求 这里要求动态路径传递 idwx.request({url: `https://applet-base-api-t.itheima.net/categories/${this.data.query.id}/shops`,method: 'GET',data: {// 请求第几页的数据_page: this.data.page,// 每页请求几条数据_limit: this.data.pageSize},success: (successResult) => {console.log(successResult)this.setData({// 将获取到的商品信息存到 商品数组中shopList: [...this.data.shopList, ...successResult.data],// 这里是获取商品的总数,因为参数名有横线,所以这里用数组包字符串自动解析,并且转为数字类型total: successResult.header['X-Total-Count'] - 0})},complete: () => {// 数据请求完毕,将节流阀 改为 false 表示可以加载数据了this.setData({isLoading: false})// 请求结束后,关闭加载效果wx.hideLoading()}})},

在这里插入图片描述

六、数据加载节流防抖处理

		// 节流阀开关isLoading: false// 在请求数据的时候,将开关进行修改// 商品请求方法getShopData() {this.setData({isLoading: true})// 数据请求完毕,在关闭节流阀
// 数据请求完毕,将节流阀 改为 false 表示可以加载数据了this.setData({isLoading: false})// 通过节流阀判断是否发送数据请求onReachBottom() {// 如果节流阀请求未结束,则不允许在此重复发送请求if (this.data.isLoading) returnthis.getShopData();},
  • 最终,简单的商品列表页动态数据渲染就结束了
    在这里插入图片描述

这篇关于微信小程序开发(实战案例):本地生活 - 列表页面开发(动态渲染处理)、节流防抖(节流阀应用)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

C语言小项目实战之通讯录功能

《C语言小项目实战之通讯录功能》:本文主要介绍如何设计和实现一个简单的通讯录管理系统,包括联系人信息的存储、增加、删除、查找、修改和排序等功能,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录功能介绍:添加联系人模块显示联系人模块删除联系人模块查找联系人模块修改联系人模块排序联系人模块源代码如下

JavaScript中的isTrusted属性及其应用场景详解

《JavaScript中的isTrusted属性及其应用场景详解》在现代Web开发中,JavaScript是构建交互式应用的核心语言,随着前端技术的不断发展,开发者需要处理越来越多的复杂场景,例如事件... 目录引言一、问题背景二、isTrusted 属性的来源与作用1. isTrusted 的定义2. 为

一文详解Python中数据清洗与处理的常用方法

《一文详解Python中数据清洗与处理的常用方法》在数据处理与分析过程中,缺失值、重复值、异常值等问题是常见的挑战,本文总结了多种数据清洗与处理方法,文中的示例代码简洁易懂,有需要的小伙伴可以参考下... 目录缺失值处理重复值处理异常值处理数据类型转换文本清洗数据分组统计数据分箱数据标准化在数据处理与分析过

SpringBoot实现动态插拔的AOP的完整案例

《SpringBoot实现动态插拔的AOP的完整案例》在现代软件开发中,面向切面编程(AOP)是一种非常重要的技术,能够有效实现日志记录、安全控制、性能监控等横切关注点的分离,在传统的AOP实现中,切... 目录引言一、AOP 概述1.1 什么是 AOP1.2 AOP 的典型应用场景1.3 为什么需要动态插

mysql外键创建不成功/失效如何处理

《mysql外键创建不成功/失效如何处理》文章介绍了在MySQL5.5.40版本中,创建带有外键约束的`stu`和`grade`表时遇到的问题,发现`grade`表的`id`字段没有随着`studen... 当前mysql版本:SELECT VERSION();结果为:5.5.40。在复习mysql外键约

详解如何在React中执行条件渲染

《详解如何在React中执行条件渲染》在现代Web开发中,React作为一种流行的JavaScript库,为开发者提供了一种高效构建用户界面的方式,条件渲染是React中的一个关键概念,本文将深入探讨... 目录引言什么是条件渲染?基础示例使用逻辑与运算符(&&)使用条件语句列表中的条件渲染总结引言在现代

Python调用另一个py文件并传递参数常见的方法及其应用场景

《Python调用另一个py文件并传递参数常见的方法及其应用场景》:本文主要介绍在Python中调用另一个py文件并传递参数的几种常见方法,包括使用import语句、exec函数、subproce... 目录前言1. 使用import语句1.1 基本用法1.2 导入特定函数1.3 处理文件路径2. 使用ex

Golang操作DuckDB实战案例分享

《Golang操作DuckDB实战案例分享》DuckDB是一个嵌入式SQL数据库引擎,它与众所周知的SQLite非常相似,但它是为olap风格的工作负载设计的,DuckDB支持各种数据类型和SQL特性... 目录DuckDB的主要优点环境准备初始化表和数据查询单行或多行错误处理和事务完整代码最后总结Duck

基于Python开发电脑定时关机工具

《基于Python开发电脑定时关机工具》这篇文章主要为大家详细介绍了如何基于Python开发一个电脑定时关机工具,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 简介2. 运行效果3. 相关源码1. 简介这个程序就像一个“忠实的管家”,帮你按时关掉电脑,而且全程不需要你多做

Go语言使用Buffer实现高性能处理字节和字符

《Go语言使用Buffer实现高性能处理字节和字符》在Go中,bytes.Buffer是一个非常高效的类型,用于处理字节数据的读写操作,本文将详细介绍一下如何使用Buffer实现高性能处理字节和... 目录1. bytes.Buffer 的基本用法1.1. 创建和初始化 Buffer1.2. 使用 Writ