程序员scholar 程序员scholar
首页
  • Java 基础

    • JavaSE
    • JavaIO
    • JavaAPI速查
  • Java 高级

    • JUC
    • JVM
    • Java新特性
    • 设计模式
  • Web 开发

    • Servlet
    • Java网络编程
  • Web 标准

    • HTML
    • CSS
    • JavaScript
  • 前端框架

    • Vue2
    • Vue3
    • Vue3 + TS
    • 微信小程序
    • uni-app
  • 工具与库

    • jQuery
    • Ajax
    • Axios
    • Webpack
    • Vuex
    • WebSocket
    • 第三方登录
  • 后端与语言扩展

    • ES6
    • Typescript
    • node.js
  • Element-UI
  • Apache ECharts
  • 数据结构
  • HTTP协议
  • HTTPS协议
  • 计算机网络
  • Linux常用命令
  • Windows常用命令
  • SQL数据库

    • MySQL
    • MySQL速查
  • NoSQL数据库

    • Redis
    • ElasticSearch
  • 数据库

    • MyBatis
    • MyBatis-Plus
  • 消息中间件

    • RabbitMQ
  • 服务器

    • Nginx
  • Spring框架

    • Spring6
    • SpringMVC
    • SpringBoot
    • SpringSecurity
  • SpringCould微服务

    • SpringCloud基础
    • 微服务之DDD架构思想
  • 日常必备

    • 开发常用工具包
    • Hutoll工具包
    • IDEA常用配置
    • 开发笔记
    • 日常记录
    • 项目部署
    • 网站导航
    • 产品学习
    • 英语学习
  • 代码管理

    • Maven
    • Git教程
    • Git小乌龟教程
  • 运维工具

    • Docker
    • Jenkins
    • Kubernetes
  • 算法笔记

    • 算法思想
    • 刷题笔记
  • 面试问题常见

    • 十大经典排序算法
    • 面试常见问题集锦
关于
GitHub (opens new window)
首页
  • Java 基础

    • JavaSE
    • JavaIO
    • JavaAPI速查
  • Java 高级

    • JUC
    • JVM
    • Java新特性
    • 设计模式
  • Web 开发

    • Servlet
    • Java网络编程
  • Web 标准

    • HTML
    • CSS
    • JavaScript
  • 前端框架

    • Vue2
    • Vue3
    • Vue3 + TS
    • 微信小程序
    • uni-app
  • 工具与库

    • jQuery
    • Ajax
    • Axios
    • Webpack
    • Vuex
    • WebSocket
    • 第三方登录
  • 后端与语言扩展

    • ES6
    • Typescript
    • node.js
  • Element-UI
  • Apache ECharts
  • 数据结构
  • HTTP协议
  • HTTPS协议
  • 计算机网络
  • Linux常用命令
  • Windows常用命令
  • SQL数据库

    • MySQL
    • MySQL速查
  • NoSQL数据库

    • Redis
    • ElasticSearch
  • 数据库

    • MyBatis
    • MyBatis-Plus
  • 消息中间件

    • RabbitMQ
  • 服务器

    • Nginx
  • Spring框架

    • Spring6
    • SpringMVC
    • SpringBoot
    • SpringSecurity
  • SpringCould微服务

    • SpringCloud基础
    • 微服务之DDD架构思想
  • 日常必备

    • 开发常用工具包
    • Hutoll工具包
    • IDEA常用配置
    • 开发笔记
    • 日常记录
    • 项目部署
    • 网站导航
    • 产品学习
    • 英语学习
  • 代码管理

    • Maven
    • Git教程
    • Git小乌龟教程
  • 运维工具

    • Docker
    • Jenkins
    • Kubernetes
  • 算法笔记

    • 算法思想
    • 刷题笔记
  • 面试问题常见

    • 十大经典排序算法
    • 面试常见问题集锦
关于
GitHub (opens new window)
npm

(进入注册为作者充电)

  • 原生微信小程序

    • 小程序入门级配置

    • 模板与配置

    • 视图与逻辑

      • 页面导航
      • 页面事件
        • 1. 下拉刷新
          • 1.1 什么是下拉刷新
          • 1.2 启用下拉刷新
          • 1.3 配置下拉刷新窗口的样式
          • 1.4 监听页面的下拉刷新事件
          • 1.5 停止下拉刷新效果
        • 2. 上拉触底事件
          • 2.1 什么是上拉触底
          • 2.2 监听页面的上拉触底事件
          • 2.3 配置上拉触底距离
        • 3. 自定义编译模式
      • 生命周期
      • WXS脚本
    • 自定义组件

  • uniapp多端开发

  • 小程序开发
  • 原生微信小程序
  • 视图与逻辑
scholar
2024-10-18
目录

页面事件

# 页面事件

在微信小程序开发中,页面事件是指用户对页面的交互行为,如下拉刷新、上拉加载等。微信小程序提供了监听这些页面事件的机制,帮助开发者捕获用户的操作并进行相应的数据加载或界面更新。

# 1. 下拉刷新

# 1.1 什么是下拉刷新

下拉刷新是一种移动端常见的交互操作,用户通过手指向下滑动页面,触发页面的刷新操作。通常用于重新加载页面数据,如更新内容、重新获取服务器数据等。用户在移动端经常使用这一操作来获取最新的信息。

# 1.2 启用下拉刷新

要启用下拉刷新,微信小程序提供了两种方式:

  1. 全局启用:在 app.json 文件的 window 节点中,将 enablePullDownRefresh 设置为 true,则所有页面都将启用下拉刷新功能。

    {
      "window": {
        "enablePullDownRefresh": true
      }
    }
    
    1
    2
    3
    4
    5
  2. 局部启用:在某个页面的 .json 配置文件中,将 enablePullDownRefresh 设置为 true,只对该页面启用下拉刷新。

    {
      "enablePullDownRefresh": true
    }
    
    1
    2
    3

推荐使用局部启用的方式,这样可以根据需要为特定的页面开启下拉刷新,减少不必要的开销。

# 1.3 配置下拉刷新窗口的样式

在小程序中,可以通过配置 backgroundColor 和 backgroundTextStyle 来修改下拉刷新的窗口样式。这些配置可以在 app.json 或页面的 .json 文件中进行设置:

{
  "backgroundColor": "#f0f0f0",   // 设置下拉刷新窗口的背景颜色
  "backgroundTextStyle": "dark"   // 设置下拉刷新时文字和 loading 的颜色
}
1
2
3
4
  • backgroundColor:设置下拉刷新时窗口的背景颜色,只支持十六进制颜色值。
  • backgroundTextStyle:设置下拉刷新时文字和加载动画的颜色,支持 dark 和 light 两种值。

# 1.4 监听页面的下拉刷新事件

当用户执行下拉刷新操作时,小程序会触发 onPullDownRefresh 事件。开发者可以在页面的 .js 文件中定义 onPullDownRefresh 函数来处理刷新逻辑,例如重新加载数据或重置页面状态。

示例代码:

Page({
  data: {
    count: 0
  },
  
  onPullDownRefresh: function() {
    // 监听下拉刷新事件,处理刷新逻辑
    this.setData({
      count: 0 // 重置 count 的值
    });

    // 刷新完成后停止 loading
    wx.stopPullDownRefresh();
  }
});
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

在这个示例中,用户触发下拉刷新后,count 的值将被重置为 0,然后通过调用 wx.stopPullDownRefresh() 来停止 loading 动画。

下图展示了页面的 UI 结构和对应的操作:

页面的 UI 结构示例

# 1.5 停止下拉刷新效果

在下拉刷新操作完成后,loading 动画不会自动停止,开发者需要手动调用 wx.stopPullDownRefresh() 来停止下拉刷新的 loading 效果。

示例代码:

wx.stopPullDownRefresh(); // 停止当前页面的下拉刷新动画
1

这段代码通常会放在数据刷新完成的回调函数中,确保在数据加载完成后隐藏刷新动画。

下图展示了停止下拉刷新的效果:

停止下拉刷新效果

# 2. 上拉触底事件

# 2.1 什么是上拉触底

上拉触底是指当用户将页面向上滑动到最底部时,触发的加载更多数据的操作。这个事件通常用于分页加载或无限滚动的场景。用户滑动到页面底部时,小程序会触发 onReachBottom 事件,开发者可以在该事件中请求新的数据并将其添加到页面中。

# 2.2 监听页面的上拉触底事件

通过在页面的 .js 文件中定义 onReachBottom 函数,开发者可以监听上拉触底事件,并在事件触发时加载更多数据。

示例代码:

Page({
  data: {
    items: [/* 初始数据 */]
  },

  onReachBottom: function() {
    // 监听上拉触底事件,加载更多数据
    this.loadMoreData();
  },

  loadMoreData: function() {
    // 模拟加载更多数据
    let moreItems = [/* 新的数据 */];
    this.setData({
      items: this.data.items.concat(moreItems)
    });
  }
});
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

在这个示例中,当用户上拉到底部时,将调用 loadMoreData 函数加载新的数据并添加到 items 中。

下图展示了页面触发上拉触底事件时的操作:

监听页面的上拉触底事件

# 2.3 配置上拉触底距离

上拉触底距离是指当页面滚动距离底部的距离达到一定值时触发 onReachBottom 事件。默认的触发距离是 50px,但开发者可以根据需求在 .json 配置文件中通过 onReachBottomDistance 自定义触发距离。

示例代码:

{
  "onReachBottomDistance": 100
}
1
2
3

在这个示例中,上拉触底的触发距离被设置为 100px,当页面距离底部 100px 时,触发 onReachBottom 事件。

# 3. 自定义编译模式

自定义编译模式是微信小程序开发工具中的一个功能,允许开发者在调试时根据不同的条件自定义编译和预览小程序的某些页面。这样可以更加灵活地测试小程序的不同页面或状态。

自定义编译模式通过设置条件来决定编译器启动哪些页面或执行哪些功能,常用于大型项目的调试和优化。

下图展示了自定义编译模式的示例界面:

自定义编译模式

总结

页面事件是微信小程序开发中用户与页面交互的核心部分。通过启用下拉刷新、上拉触底等功能,开发者可以为用户提供更加流畅和直观的数据加载体验。同时,通过灵活使用这些页面事件,开发者可以构建出功能完善、用户体验良好的小程序。

编辑此页 (opens new window)
上次更新: 2025/01/31, 00:08:39
页面导航
生命周期

← 页面导航 生命周期→

Theme by Vdoing | Copyright © 2019-2025 程序员scholar
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式