首先在小程序中,所有頁(yè)面的路由都由框架統(tǒng)一管理。getCurrentPages() 函數(shù)用于獲取當(dāng)前頁(yè)面棧的實(shí)例,以數(shù)組形式按棧的順序給出,第一個(gè)元素為首頁(yè),最后一個(gè)元素為當(dāng)前頁(yè)面。
// 獲取加載的頁(yè)面對(duì)象
const pages = getCurrentPages();
// 獲取當(dāng)前頁(yè)面的對(duì)象
const currentPage = pages[pages.length - 1];
tips:
1.不要嘗試修改頁(yè)面棧,會(huì)導(dǎo)致路由以及頁(yè)面狀態(tài)錯(cuò)誤。
2.不要在 App.onLaunch 的時(shí)候調(diào)用 getCurrentPages(),此時(shí) page 還沒(méi)有生成。
一、獲取當(dāng)前頁(yè)面url
// 當(dāng)前頁(yè)面url
const url = currentPage.route;
二、參數(shù)傳遞
1.全部變量,小程序初始化時(shí)會(huì)讀取app.js文件,我們可以在這里配置全局變量,如:圖片訪問(wèn)地址、請(qǐng)求地址、appid等等。
globalData: {
appid: '123654',
requestUrl: 'https://www.test.com/'
}
在頁(yè)面中,可以通過(guò) getApp()方法獲取到全局應(yīng)用對(duì)象,可以進(jìn)行讀取或更改。
var app = getApp();
var appid = app.globalData.appid;
2.小程序本地緩存
可以將一些常用變量(如appid)或者用戶行為(如搜索歷史)、長(zhǎng)期不改變的圖片(減少請(qǐng)求)等。本地緩存一經(jīng)儲(chǔ)存,其它頁(yè)面均可隨時(shí)獲取使用。
// 存儲(chǔ)
wx.setStorageSync("appid", "123654");
// 讀取
wx.getStorageSync("appid");
3.url傳遞
這個(gè)方法較適用于頁(yè)面之前跳轉(zhuǎn)(如商品列表跳轉(zhuǎn)商品詳情),直接拼接在url里就可以了。
wx.navigateTo({
url: '../test/test?id=1'
})
獲取方式:
①getCurrentPages() 函數(shù)獲取
const options = currentPage.options;
②onLoad里直接獲取
onLoad: function (options) {
console.log(options)
}
小結(jié):
小程序參數(shù)、數(shù)據(jù)傳遞包括不限于以上幾種,大家可以結(jié)合實(shí)際情況使用,如:
1.全局變量,就在app.js配置
2.父、子及傳遞可以使用url傳遞
3.登錄狀態(tài)(token)等可以使用本地緩存,方便隨時(shí)調(diào)用