tencent cloud

腾讯云超级应用服务

动态与公告
【2025年1月2日】关于腾讯云小程序平台更名为腾讯云超级应用服务的公告
控制台更新动态
Android SDK 更新动态
iOS SDK 更新动态
Flutter 更新动态
IDE 更新动态
基础库更新动态
产品简介
产品概述
产品优势
应用场景
购买指南
计费概述
按量计费(后付费)
续费指引
停服说明
快速入门
套餐管理
概述
控制台账号管理
存储配置
加速配置
品牌化配置
平台功能
控制台登录
用户和权限体系
小程序管理
小游戏管理
应用管理
商业化
平台管理
用户管理
团队管理
运营管理
安全中心
代码接入指引
Demo 及 SDK 获取
Android
iOS
Flutter
App 服务端接入指南
GUID 生成规则
小程序开发指南
小程序介绍与开发环境
小程序代码组成
指南
框架
组件
API
服务端
JS SDK
基础库
IDE 使用指南
小游戏开发指南
指南
API
服务端
实践教程
小程序登录实践教程
小程序订阅消息实践教程
支付相关实践教程
广告接入实践教程
小游戏订阅消息实践教程
相关协议
数据处理和安全协议

页面

PDF
聚焦模式
字号
最后更新时间: 2025-08-08 17:04:55

Page(Object object)

注册小程序中的一个页面。接受一个 Object 类型参数,其指定页面的初始数据、生命周期回调、事件处理函数等。

参数

Object object

属性
类型
默认值
必填
说明
data
Object
-
-
页面的初始数据
onLoad
function
-
-
生命周期回调—监听页面加载
onShow
function
-
-
生命周期回调—监听页面显示
onReady
function
-
-
生命周期回调—监听页面初次渲染完成
onHide
function
-
-
生命周期回调—监听页面隐藏
onUnload
function
-
-
生命周期回调—监听页面卸载
function
-
-
监听用户下拉动作
function
-
-
页面上拉触底事件的处理函数
function
-
-
用户单击右上角转发
function
-
-
页面滚动触发事件的处理函数
function
-
-
开发者拦截页面的默认返回时回调
function
-
-
当前是 tab 页时,单击 tab 时触发
其他
any
-
-
开发者可以添加任意的函数或数据到 Object 参数中,在页面的函数中用 this 可以访问。这部分属性会在页面实例创建时进行一次深拷贝。
示例代码:
//index.js
Page({
data: {
text: "This is page data."
},
onLoad: function(options) {
// Do some initialize when page load.
},
onShow: function() {
// Do something when page show.
},
onReady: function() {
// Do something when page ready.
},
onHide: function() {
// Do something when page hide.
},
onUnload: function() {
// Do something when page close.
},
onPullDownRefresh: function() {
// Do something when pull down.
},
onReachBottom: function() {
// Do something when page reach bottom.
},
onShareAppMessage: function () {
// return custom share data when user share.
},
onPageScroll: function() {
// Do something when page scroll
},
onResize: function() {
// Do something when page resize
},
onTabItemTap(item) {
console.log(item.index)
console.log(item.pagePath)
console.log(item.text)
},
// Event handler.
viewTap: function() {
this.setData({
text: 'Set some data for updating view.'
}, function() {
// this is setData callback
})
},
customData: {
hi: 'MINA'
}
})

data

data 是页面第一次渲染使用的初始数据
页面加载时,data 将会以JSON字符串的形式由逻辑层传至渲染层,因此data中的数据必须是可以转成JSON的类型:字符串,数字,布尔值,对象,数组。
渲染层可以通过 WXML 对数据进行绑定。
示例代码:
<view>{{text}}</view>
<view>{{array[0].msg}}</view>
Page({
data: {
text: 'init data',
array: [{msg: '1'}, {msg: '2'}]
}
})

生命周期回调函数

生命周期的触发以及页面的路由方式详见 逻辑层

onLoad(Object query)

页面加载时触发。一个页面只会调用一次,可以在 onLoad 的参数中获取打开当前页面路径中的参数。
参数:
名称
类型
说明
query
Object
打开当前页面路径中的参数

onShow()

页面显示/切入前台时触发。

onReady()

页面初次渲染完成时触发。一个页面只会调用一次,代表页面已经准备妥当,可以和视图层进行交互。
注意:对界面内容进行设置的 API 如 wx.setNavigationBarTitle,请在 onReady 之后进行。详见 生命周期

onHide()

页面隐藏/切入后台时触发。 如 wx.navigateTo 或底部 tab 切换到其他页面,小程序切入后台等。

onUnload()

页面卸载时触发。如 wx.redirectTowx.navigateBack 到其他页面时。

页面事件处理函数

onPullDownRefresh()

监听用户下拉刷新事件。
需要在app.json的 window 选项中或 页面配置 中开启 enablePullDownRefresh;
可以通过 wx.startPullDownRefresh 触发下拉刷新,调用后触发下拉刷新动画,效果与用户手动下拉刷新一致;
当处理完数据刷新后,wx.stopPullDownRefresh 可以停止当前页面的下拉刷新。

onReachBottom()

监听用户上拉触底事件。
可以在 app.json 的 window 选项中或 页面配置 中设置触发距离 onReachBottomDistance;
在触发距离内滑动期间,本事件只会被触发一次。

onPageScroll(Object object)

监听用户滑动页面事件。
参数 Object object:
属性
类型
说明
scrollTop
Number
页面在垂直方向已滚动的距离(单位 px)
注意:
请只在需要的时候才在 page 中定义此方法,不要定义空方法。以减少不必要的事件派发对渲染层-逻辑层通信的影响。
请避免在 onPageScroll 中过于频繁的执行 setData 等引起逻辑层-渲染层通信的操作。尤其是每次传输大量数据,会影响通信耗时。

onShareAppMessage(Object object)

监听用户单击页面内转发按钮(button 组件 open-type="share")或右上角菜单“转发”按钮的行为,并自定义转发内容。
注意:
只有定义了此事件处理函数,右上角菜单才会显示“转发”按钮。
参数 Object object:
参数
类型
说明
from
String
转发事件来源
button:页面内转发按钮;
menu:右上角转发菜单。
target
Object
如果 from 值是 button,则 target 是触发这次转发事件的 button,否则为 undefined
webViewUrl
String
页面中包含 web-view 组件时,返回当前 web-view 的 url
String
用户单击分享到哪里。
此事件处理函数需要 return 一个 Object,用于自定义转发内容,返回内容如下:
字段
类型
说明
默认值
title
String
转发标题
当前小程序名称
path
String
转发路径
当前页面 path ,必须是以 / 开头的完整路径
imageUrl
String
自定义图片路径,可以是本地文件路径、代码包文件路径或者网络图片路径。支持 PNG 及 JPG。显示图片长宽比是 5:4。
使用默认截图

shareTarget参数说明:

取值
说明
0
分享到 QQ 好友
1
分享到 QQ 空间
3
分享到微信好友
4
分享到微信朋友圈
示例代码:
Page({
onShareAppMessage(res) {
if (res.from === 'button') {
// 来自页面内转发按钮
console.log(res.target)
}
return {
title: '自定义转发标题',
path: '/page/user?id=123'
}
}
})

onCustomBack()

监听用户返回上一页事件。
需要在 app.json 的 window 选项中或 页面配置 中开启customNavigateBack。
单击 tabBar 返回或手势侧滑或 back 键返回均会触发该事件。

onTabItemTap(Object)

单击 tab 时触发。

Object 参数说明:
参数
类型
说明
index
String
被单击 tabItem 的序号,从0开始
pagePath
String
被单击 tabItem 的页面路径
text
String
被单击 tabItem 的按钮文字
示例代码:
Page({
onTabItemTap(item) {
console.log(item.index)
console.log(item.pagePath)
console.log(item.text)
}
})

组件事件处理函数

Page 中还可以定义组件事件处理函数。在渲染层的组件中加入 事件绑定,当事件被触发时,就会执行 Page 中定义的事件处理函数。
示例代码:
<view bindtap="viewTap"> click me </view>
Page({
viewTap: function() {
console.log('view tap')
}
})

Page.route

到当前页面的路径,类型为 String。
Page({
viewTap: function() {
console.log('view tap')
}
})

Page.prototype.setData(Object data, Function callback)

setData 函数用于将数据从逻辑层发送到渲染层(异步),同时改变对应的 this.data 的值(同步)。
参数:
字段
类型
必填
描述
data
Object
此次要改变的数据
callback
Function
setData 引起的界面更新渲染完毕后的回调函数
Objectkey: value 的形式表示,将 this.data 中的 key 对应的值改变成 value
其中 key 可以以数据路径的形式给出,支持改变数组中的某一项或对象的某个属性,如 array[2].messagea.b.c.d,并且不需要在 this.data 中预先定义。
注意:
直接修改 this.data 而不调用 this.setData 是无法改变页面的状态的,还会造成数据不一致。
仅支持设置可 JSON 化的数据。
单次设置的数据不能超过1024kB,请尽量避免一次设置过多的数据。
请不要把 data 中任何一项的 value 设为 undefined ,否则这一项将不被设置并可能遗留一些潜在问题。
<!--index.wxml-->
<view>{{text}}</view>
<button bindtap="changeText"> Change normal data </button>
<view>{{num}}</view>
<button bindtap="changeNum"> Change normal num </button>
<view>{{array[0].text}}</view>
<button bindtap="changeItemInArray"> Change Array data </button>
<view>{{object.text}}</view>
<button bindtap="changeItemInObject"> Change Object data </button>
<view>{{newField.text}}</view>
<button bindtap="addNewField"> Add new data </button>
// index.js
Page({
data: {
text: 'init data',
num: 0,
array: [{text: 'init data'}],
object: {
text: 'init data'
}
},
changeText: function() {
// this.data.text = 'changed data' // 不要直接修改 this.data
// 应该使用 setData
this.setData({
text: 'changed data'
})
},
changeNum: function() {
// 或者,可以修改 this.data 之后马上用 setData 设置一下修改了的字段
this.data.num = 1
this.setData({
num: this.data.num
})
},
changeItemInArray: function() {
// 对于对象或数组字段,可以直接修改一个其下的子字段,这样做通常比修改整个对象或数组更好
this.setData({
'array[0].text':'changed data'
})
},
changeItemInObject: function(){
this.setData({
'object.text': 'changed data'
});
},
addNewField: function() {
this.setData({
'newField.text': 'new data'
})
}
})

PageObject[] getCurrentPages()

获取当前页面栈。数组中第一个元素为首页,最后一个元素为当前页面。

注意事项

不要尝试修改页面栈,会导致路由以及页面状态错误
不要在 App.onLaunch 的时候调用 getCurrentPages(),此时 page 还没有生成。

帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈