在作微信小程序的時候,常常會遇到須要頁面間傳遞參數的狀況,根據目前項目經驗,總結了如下幾種方式:URL傳參、緩存和方法調用。html
URL傳參
這種方式是最簡單也是最經常使用的,這里就不作過多介紹了。vue
緩存
雖然URL傳參比較簡單易用,但也有局限性,就是只能傳遞簡單參數,對于復雜的參數就顯得無能為力了,但不少時候咱們須要傳遞的是結構比較復雜的數據,這時候不少開發(fā)者都會想到用緩存。vuex
使用緩存咱們有兩種方式:小程序自帶Storage和vuex。由于咱們的項目是基于mpvue的,順帶也用了vuex了小程序
不論是用上面哪一種方式,想法都是同樣的:在跳轉頁面以前先把參數保存到緩存,進入頁面以后先獲取緩存的參數,而后清除緩存中的參數,進行業(yè)務操做。大體偽代碼以下:微信小程序
// pageA.vue
goToPageB() {
let arg = {
name: 'Jack',
age: 9
}
// 先把參數保存到緩存 好比這里用的是小程序的Storage,這里采用同步的方式
wx.setStorageSync({
key: 'pageArg',
data: arg
})
wx.navigateTo({
url: 'pageB'
})
}
// pageB.vue
mounted() {
// 從緩存中取出參數
let arg = wx.getStorageSync('pageArg')
// 清除緩存中的頁面參數
wx.removeStorageSync('pageArg')
// 進行業(yè)務處理
// ...
}
復制代碼
大體就是這么個邏輯,可能具體項目中會對存取緩存進行封裝,或者在vuex中的作法又不同,但思想是同樣的。api
這樣作是能夠實現(xiàn)功能,但總感受不太好,每次都要進行存取操做,感受很麻煩,并且顯得不高端。。。瀏覽器
因而乎,咱們想了個方式傳遞,就是今天的主角:方法調用。緩存
方法調用
這種方式確定不是最好最優(yōu)雅的解決方式,由于咱們也以為有欠缺的地方,但目前用起來仍是比較方便的,今天放出來也是但愿讓你們看下怎么進行修改,也以便于咱們優(yōu)化。微信
主要是用了小程序提供的方法,具體內容可查看文檔,我這里直接就貼圖了,由于文檔說的很簡單app
小程序對頁面的管理感受跟瀏覽器中的history差很少,也是有一個頁面棧,每次跳轉頁面都是往這個棧里push一個頁面對象,返回的時候就pop一個,固然具體實現(xiàn)要復雜不少。
這里官方重點提示了:不要嘗試修改頁面棧,這也就是為何我說咱們的這種傳參方式不是很好的緣由,咱們就是經過方法修改了這個頁面棧的數據。