一 什么是page()
page(),是一個函數,用來注冊一個頁面,
接受一個object參數,
指定頁面的初始數據,生命周期函數,事件處理函數
等等
object參數說明:
(1)data (object)
頁面的初始數據
初始化數據
初始化數據將作為頁面的第一次渲染,
data將會以JSON的形式有邏輯層傳至渲染層 所以其數據必須是可以 轉成JSON的格式 (字符串,數字,布爾值,對象,數組) 渲染層可以通過WXML對數據進行綁定

初始化數據示例代碼.png
(2)onLoad(function)
生命周期函數--監聽頁面加載
頁面加載onLoad
一個頁面只會調用一次
接收頁面參數可以獲取
wx.navigateTo,wx.redirectTo, <navigator/>中的query
(3)onReady (function)
生命周期函數--監聽頁面初次渲染完成
(4)onShow (function)
生命周期函數--監聽頁面顯示 頁面顯示onShow 每次打開頁面都會調用一次 頁面初次渲染完成onReady 一個頁面只會調用一次,代表頁面已經准備妥當,可以和視圖層進行交互 對界面的設置如 wx.setNavigationBarTitle請在onReady之后設置
(5)onHide (function)
生命周期函數--監聽頁面隱藏
頁面隱藏onHide
當navigateTo或者底部tab切換時候調用
(6)onUnload(function)
生命周期函數--監聽頁面卸載
頁面卸載onUnload
當redirectTo或者navigateBack的時候調用
(7)onPullDownRefresh (function)
頁面相關事件處理函數--監聽用戶下拉動作
頁面相關事件的處理函數
onPullDownRefresh:下拉刷新
監聽用戶下拉刷新事件
需要在config的window選項中開啟enablePullDownRefresh 當處理完數據刷新后, wx.stopPullDownRefresh可以停止當前頁面的下拉刷新
(8)onReachBottom (function)
頁面上拉觸底事件的處理函數
(9)其他 (Any)
開發者可以添加任意的函數或者數據到object參數中,
在頁面的函數中用this可以訪問

page示例代碼.png
二 事件處理函數
除了初始化數據和生命周期函數,
page中還可以定義一些特殊的函數,
事件處理函數,
在渲染層可以在組件中加入事件綁定,
當達到觸發事件后,
就會執行page中定義的事件處理函數

事件處理函數示例代碼.png
(1)Page.prototype.setData()
setData
函數用於將數據從邏輯層發送到視圖層,
同時改變對應的 this.data的值 注意: 直接修改 this.data 無效, 無法改變頁面的狀態, 還會造成數據不一致。 單次設置的數據不能超過1024kB, 請盡量避免一次設置過多的數據
setData()參數格式
接受一個對象,
以key,value的形式表示將this.data中的key對應的值改為value key可以非常靈活,以數據路徑的形式給出

setData()函數示例代碼(1).png

setData()函數示例代碼(2).png
(2)getCurrentPages()
getCurrentPages() 函數用於獲取當前頁面棧的實例,
以數組形式按棧的順序給出,第一個元素為首頁,最后一個參數是當前頁
注意:不要嘗試修改頁面棧,會導致路由以及頁面狀態錯誤
三 頁面棧
框架以棧的形式維護了當前的所有頁面,當發生路由切換的時候,頁面棧的表現如下:
初始化 新頁面入棧
打開新頁面 新頁面入棧
頁面重定向 當前頁面出棧,新頁面入棧
頁面返回 頁面不斷出棧,直到目標返回頁,新頁面入棧
Tab 切換 當前頁面出棧,新頁面入棧
四 生命周期

生命周期圖(1).png

生命周期圖(2).png
五 頁面的路由
在小程序中,所有頁面的路由全部由框架進行管理,對於路由的觸發方式以及頁面生命周期函數如下:
路由方式——觸發時機——路由后頁面——路由當前頁
(1)
初始化——
小程序打開的第一個頁面——onLoad,onShow
(2)
打開新頁面——
調用API(wx.navigateTo)或者使用組件<navigator/>——onLoad,onShow—— onHide (3) 頁面重定向—— 調用 API (wx.redirectTo)或使用組件 <navigator />——onLoad,onShow—— onUnload (4) 頁面返回—— 調用API(wx.navigateBack)或者用戶按左上角返回按鈕——onShow—— onUnload(多層頁面返回每個頁面都會按順序觸發onUnload) (5) Tab 切換—— 多 Tab 模式下用戶切換 Tab—— 第一次打開 onLoad,onshow;否則 onShow—— onHide
.