抖音开放平台Logo
控制台

页面

更新时间 2024-05-15 17:26:19
收藏
我的收藏
注册页面
对于小程序中的每个页面,都需要在页面对应的 page.js 文件中进行注册,指定页面的初始数据、生命周期回调、事件处理函数等。
注册页面有两种方式:使用 Page 注册和使用 Component 构造器注册。
使用 Page 注册页面
简单的页面可以使用 Page() 进行注册。
//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.
},
onReachBottom: function () {
// Do something when page reach bottom.
},
onPageScroll: function () {
// Do something when page scroll
},
onResize: function () {
// Do something when page resize
},
// Event handler.
viewTap: function () {
this.setData(
{
text: "Set some data for updating view.",
},
function () {
// this is setData callback
}
);
},
// Custom Data
customData: {
hi: "hello",
},
});
使用 Component 构造器注册页面
复杂的页面可以使用 Component 构造器来构造页面。
Component 构造器的主要区别是:方法需要放在 methods: { } 里面。
Component({
data: {
text: "This is page data.",
},
methods: {
onLoad: function (options) {
// 页面创建时执行
},
onPullDownRefresh: function () {
// 下拉刷新时执行
},
// 事件响应函数
viewTap: function () {
// ...
},
},
});
这种创建方式非常类似于自定义组件 ,可以像自定义组件一样使用 behaviors 等高级特性。
具体细节请阅读 Component 构造器
使用 Component 构造器来构造的页面可以引用 behaviors 。 behaviors 可以用来让多个页面有相同的数据字段和方法。具体用法参见 behaviors
page
page(params) 是进入某个页面的时候会执行的页面入口函数,params 是一个 object 类型的参数,定义了页面初始数据,生命周期函数,事件处理函数等。
params 参数说明
属性
类型
描述
data
Object
页面的初始数据
onLoad
Function
生命周期函数--监听页面加载
onReady
Function
生命周期函数--监听页面初次渲染完成
onShow
Function
生命周期函数--监听页面显示
onHide
Function
生命周期函数--监听页面隐藏
onUnload
Function
生命周期函数--监听页面卸载
onResize
Function
生命周期函数--监听页面尺寸变化,在直播小程序卡片、POI 详情页商品入口的七分屏场景中使用。
onPullDownRefresh
Function
页面相关事件处理函数--监听用户下拉动作
onReachBottom
Function
页面上拉触底事件的处理函数
onShareAppMessage
Function
分享时触发,该钩子支持异步能力,允许在函数内 await Promise,具体可参考转发和挂载概述
onUploadDouyinVideo
Function
发布抖音视频时触发,该钩子支持异步能力,允许在函数内 await Promise,具体可参考转发和挂载概述
onLiveMount
Function
在抖音直播中挂载小程序锚点时触发,该钩子支持异步能力,允许在函数内 await Promise,具体可参考转发和挂载概述
onPageScroll
Function
页面滚动触发事件的处理函数
其他
Any
开发者可以添加任意的函数或数据到 object 参数中,在页面的函数中用 this 可以访问。
基础库版本2.91.0以下,如果不注册 onShareAppMessage,右上角胶囊按钮菜单里的分享按钮显示逻辑见:关于“更多面板分享按钮”显示逻辑的变更
示例代码
初始数据
初始化数据将作为页面的第一次渲染。data 将会以 JSON 的形式由逻辑层传至渲染层,所以其数据必须是可以转成 JSON 的格式:字符串,数字,布尔值,对象,数组。
渲染层可以通过 TTML 对数据进行绑定。
示例代码
<!-- index.ttml -->
<view>{{text}}</view>
<view>{{array[0].msg}}</view>
// index.js
Page({
data: {
text: "init data",
array: [{ msg: "1" }, { msg: "2" }],
},
});
生命周期回调函数
onLoad生命周期函数会接受到当前页面打开时设置的query参数。比如:
// 页面url是'page/index/index?a=1&key=value'
...
onLoad: function (options) {
console.log(options) // {a: '1', key: 'value'}
}
页面生命周期的更多信息,请参见页面生命周期
事件处理函数
除了初始化数据和生命周期函数,Page 中还可以定义一些特殊的函数:事件处理函数。在渲染层可以在组件中加入事件绑定,当达到触发事件时,就会执行 Page 中定义的事件处理函数。
示例代码
<!-- index.ttml -->
<view bindtap="viewTap"> click me </view>
// index.js
Page({
viewTap: function () {
console.log("view tap");
},
});
更新页面渲染 setData()
字段
类型
必填
描述
data
Object
这次要改变的数据
callback
Function
回调函数
参数 data 以 key,value 的形式表示将 this.data 中的 key 对应的值改变成 value。 callback 是一个回调函数,在这次 setData 对界面渲染完毕后调用。
示例代码
<!--index.ttml-->
<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' // 这样无法更新UI
this.setData({
text: "changed data",
});
},
changeNum: function () {
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",
});
},
});
分屏场景页面尺寸变化
直播小程序卡片、POI 详情页商品入口场景下调起七分屏时触发。详见响应显示区域变化
getCurrentPages()
getCurrentPages() 函数用于获取当前页面栈的实例,以数组形式按栈的顺序给出,第一个元素为首页,最后一个元素为当前页面。

文档评论

登录后可参与评论
点击纠错
rangeDom