微信小程序知识点整理(四)——页面事件

本文详细介绍移动端应用中下拉刷新和上拉加载更多功能的实现方法,包括配置、监听事件、停止刷新等,同时涉及页面滑动、分享及tabBar点击事件处理。

一、下拉刷新

下拉刷新的概念以及场景
  • 概念:下拉刷新是移动端更新列表数据的交互行为,用户通过手指在屏幕上自上而下的滑动,可以触发页面的下拉刷新,更新列表数据。
  • 应用场景:在移动端,数据列表是常见的页面效果,更新列表数据是最基本的页面需求,相比于按钮刷新、定时刷新来说,下拉刷新的用户体验方便友好,已经成为移动端刷新列表数据的最佳解决方案。
如何启动下拉刷新
  • app.jsonwindow 选项中或页面配置中开启 enablePullDownRefresh
{
  "usingComponents": {},
  "enablePullDownRefresh": true
}
  • 可以通过 wx.startPullDownRefresh() 触发下拉刷新,调用后触发下拉刷新动画,效果与用户手动下拉刷新一致。
<button bindtap="refresh" type="primary">刷新</button>
refresh:function() {
    wx.startPullDownRefresh()
  }

注意: 一般情况下,推荐在页面配置中为需要的页面单独开启下拉刷新行为

设置下拉刷新窗口的样式
  • app.jsonwindow 选项中或页面配置中修改 backgroundColorbackgroundTextStyle 选项。
  • backgroundColor 用来配置下拉刷新窗口的背景颜色,仅支持16进制颜色值
  • backgroundTextStyle 用来配置下拉刷新 loading 的样式,仅支持 darklight
监听下拉刷新事件

需要先开启下拉刷新

  • 为页面添加 onPullDownRefresh() 函数,可以监听用户在当前页面的下拉刷新事件。
/**
 * 页面相关事件处理函数--监听用户下拉动作
 */
onPullDownRefresh: function () {
  console.log('触发下拉刷新啦')
}
停止下拉刷新
  • 处理完下拉刷新后,下拉刷新的 loading 效果会一直显示,不会主动消失,
  • 因此需要手动隐藏下拉刷新的 loading 效果,调用 wx.stopPullDownRefresh() 可以停止当前页面的下拉刷新。
/**
 * 页面相关事件处理函数--监听用户下拉动作
 */
onPullDownRefresh: function () {
  	console.log('触发下拉刷新啦')
	 setTimeout(function(){
	 wx.stopPullDownRefresh()
	 },2000)
}

二、上拉加载

上拉加载的概念以及场景
  • 概念:在移动端,随着手指不断向上滑动,当内容将要到达屏幕底部的时候,页面会随之不断的加载后续内容,直到没有新内容为止,我们称之为上拉加载更多。上拉加载更多的本质就是数据的分页加载
  • 应用场景:在移动端,列表数据的分页加载,首选的实现方式就是上拉加载更多。
设置上拉加载的距离
  • app.jsonwindow选项中或页面配置中设置触底距离 onReachBottomDistance。单位为px,默认触底距离为 50px
  • 为页面添加 onReachBottom() 函数,可以监听用户在当前页面的上拉触底事件,从而实现上拉加载更多列表数据的效果。
/**
 * 页面上拉触底事件的处理函数
 */
onReachBottom: function () {
  console.log('触发上拉刷新啦')
}
案例
<!--wxml  *this 表示用item来做唯一的标识-->
<view wx:for="{{dataList}}" wx:key="*this" class="list">
{{item}}
</view>
// js
  data: {
    dataList:[1,2,3,4,5,6,7,8,9,10],
    pageSize:1
  },
/**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {
    console.log("触底了")
    this.setData({
      pageSize:this.data.pageSize+1
    })
   let newArr = []
   for(let i = 0;i<10;i++){
     newArr.push((this.data.pageSize-1)*10 +i+1)
   }
   this.setData({
     dataList: [...this.data.dataList,...newArr]
   })
  }

三、页面滑动事件onPageScroll

  • 监听用户滑动页面事件

    • 得到 scrollTop,页面在垂直方向已滚动的距离(单位px
// 页面滑动事件
  onPageScroll: function (e) {
    console.log(e.scrollTop)
  }

四、分享事件 onShareAppMessage

  • 监听用户点击页面内转发按钮(<button> 组件 open-type="share"
  • 右上角菜单“转发”按钮的行为,并自定义转发内容。
参数类型说明
fromString转发事件来源。button:页面内转发按钮;menu:右上角转发菜单
targetObject如果 from 值是 button,则 target 是触发这次转发事件的 button,否则为 undefined
webViewUrlString页面中包含<web-view>组件时,返回当前<web-view>的url
 /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function (e) {
   console.log(e)
  }

在这里插入图片描述

  • 自定义转发内容, return 一个 Object就可以
字段说明默认值
title转发标题当前小程序名称
path转发路径当前页面 path ,必须是以/开头的完整路径
imageUrl自定义图片路径,可以是本地文件路径、代码包文件路径或者网络图片路径。支持PNGJPG。显示图片长宽比是 5:4。默认使用当前页面截图
 /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function (e) {
   console.log(e)
   return {
     title:'转发内容',
     path:'/pages/home/home',
     imageUrl:'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1576818531394&di=e4d379ce6951a1425a27855731e1b79d&imgtype=0&src=http%3A%2F%2Fa3.att.hudong.com%2F35%2F34%2F19300001295750130986345801104.jpg'
   }
  }

五、点击 tabBar时触发事件 onTabItemTap

参数类型说明
indexString被点击 tabItem 的序号,从0开始
pagePathString被点击tabItem 的页面路径
textString被点击 tabItem 的按钮文字
// 点击tabBar触发事件
  onTabItemTap(item){
    console.log(item.index)// 1
    console.log(item.pagePath)// pages/tabMessage/tabMessage
    console.log(item.text)// 消息
  }
<think>嗯,用户这次想要查找关于微信小程序的全面知识点和学习资料。从用户问题来看,ta需要的是系统性的开发指南和知识体系整理,而不仅仅是零散的参考资料。上次我整理的官方文档和知识框架用户似乎比较满意,但这次ta特别强调了"全面知识点"这个需求。用户可能是个刚入门的小程序开发者,正在寻找系统的学习路径。ta提到的引用[1]和[2]里其实已经包含不少资源,但需要更结构化地呈现。注意到用户特别提到"开发指南"这个关键词,应该重点突出官方文档的核心地位。引用[2]里提到的OpenID获取流程变化很有意思,现在通过云函数可以直接获取了,这个关键更新一定要包含在知识点里。我打算这样组织:先用树状结构展示核心知识模块,这样用户能有整体认知框架。然后区分官方文档和拓展资源两部分,把引用[1]列出的链接按类型重组,比如工具类、设计类、API类分开呈现。对于关键知识点,要特别标注出现版本的变化,就像云函数获取OpenID这种重要更新。用户可能还会关心学习路径,所以补充入门顺序建议。引用[2]提到的OpenID机制变化可以单独列为"关键知识点"栏,这个细节对开发者实际很重要。最后生成的问题要引导用户深入具体技术点,比如云开发、权限管理这些实操性强的方向。这样既解答了当前的资料需求,又为后续深入提问做了铺垫。对了,所有链接要保持可用性,需要检查引用[1]中的链接是否仍然有效——特别是"公测接入指南"这类早期文档,现在可能已合并到其他指南里了。</think> 以下是微信小程序开发的全面知识点整理及权威学习资料汇编,结合官方文档和核心开发要点,形成系统学习框架: --- ### **一、微信小程序官方资料体系** 1. **开发工具** - [微信开发者工具](https://developers.weixin.qq.com/miniprogram/dev/devtools/devtools.html)(必备IDE,集成调试、预览、发布功能) 2. **核心文档** | 文档类型 | 链接 | |-------------------------|----------------------------------------------------------------------| | 入门指南 | [小程序新手教程](https://developers.weixin.qq.com/miniprogram/dev/framework/quickstart/) | | 框架原理 | [逻辑层+渲染层详解](https://developers.weixin.qq.com/miniprogram/dev/framework/MINA.html) | | 组件库 | [官方组件全集](https://developers.weixin.qq.com/miniprogram/dev/component/) | | API 大全 | [开放接口列表](https://developers.weixin.qq.com/miniprogram/dev/api/) | | 云开发 | [云函数/数据库/存储](https://developers.weixin.qq.com/miniprogram/dev/wxcloud/basis/getting-started.html) | | 设计规范 | [UI设计指南](https://developers.weixin.qq.com/miniprogram/design/) | 3. **进阶资源** - [支付功能集成](https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_5_1.shtml) - [小程序性能优化](https://developers.weixin.qq.com/miniprogram/dev/framework/performance/) - [安全运维指南](https://developers.weixin.qq.com/miniprogram/dev/framework/operation.html) --- ### **二、关键知识点分类体系** #### **1. 基础架构** - **双线程模型**:渲染层(WebView)与逻辑层(JSCore)隔离 - **数据驱动**:使用`Page()`构造页面,`setData()`更新视图 - **生命周期**: ```javascript Page({ onLoad() {}, // 页面加载 onShow() {}, // 页面显示 onReady() {}, // 页面渲染完成 onHide() {} // 页面隐藏 }) ``` #### **2. 核心能力** | 模块 | 关键技术点 | |-----------------|----------------------------------------------------------------------------| | **用户体系** | `wx.login()`获取code → 换取`openId`(**云开发直接获取**)[^2] | | **数据缓存** | `wx.setStorageSync()`本地缓存,`Cloud.database()`云数据库 | | **网络请求** | `wx.request()`支持HTTPS,需配置合法域名 | | **设备能力** | 摄像头、定位、蓝牙等接口调用权限管理 | #### **3. 云开发(重点)** - **云函数**:免运维Node.js环境,免鉴权调用API ```javascript // 云函数示例:获取openId exports.main = async (event, context) => { const wxContext = cloud.getWXContext() return { openid: wxContext.OPENID } } ``` - **云数据库**:JSON文档型数据库,支持实时更新 - **云存储**:文件上传/下载,自动生成CDN链接 --- ### **三、学习路径建议** 1. **基础入门** 开发工具安装 → 创建demo项目 → 阅读[新手教程](https://developers.weixin.qq.com/miniprogram/dev/framework/quickstart/) 2. **组件实战** 实现表单页面(`input`+`picker`)→ 开发商品列表(`scroll-view`+`wx:for`) 3. **云开发进阶** 部署云函数 → 实现用户登录 → 构建实时聊天室 4. **商业化实践** 接入微信支付 → 使用订阅消息 → 数据分析优化 --- ### **、社区资源** - **官方社区**:[微信开放社区](https://developers.weixin.qq.com/community/minihome) - **GitHub资源**:awesome-wechat-weapp(开源组件库集合) - **实战课程**:[B站小程序开发实战](https://www.bilibili.com/video/BV1nE41117BQ)(免费) ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值