您好,登錄后才能下訂單哦!
小編給大家分享一下小程序頁(yè)面間傳遞數(shù)據(jù)的方式有哪些,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
使用wx.navigateTo
與 wx.redirectTo
的時(shí)候,可以將部分?jǐn)?shù)據(jù)放在 url 里面,并在新頁(yè)面 onLoad
的時(shí)候獲取且初始化。
//pageA.js // Navigate wx.navigateTo({ url: '../pageB/pageB?name=lin&gender=male', }) // Redirect wx.redirectTo({ url: '../pageB/pageB?name=lin&gender=male', }) // pageB.js ... Page({ onLoad: function(option){ console.log(option.name + 'is' + option.gender); this.setData({ option: option }); } })
需要注意的問(wèn)題:
使用wx.navigateTo
與 wx.redirectTo
時(shí),不允許跳轉(zhuǎn)到 tab 所包含的頁(yè)面;
onLoad
只執(zhí)行一次;
適用:
這種方式一般適用于少數(shù)頁(yè)面之間需要少量數(shù)據(jù)傳遞,如B頁(yè)面需要A頁(yè)面中的1-2個(gè)數(shù)據(jù)等等。
在 app.js 文件中定義全局變量 globalData
,舊頁(yè)面將要傳遞的數(shù)據(jù)賦值存放在里面,新頁(yè)面調(diào)用全局變量獲取傳遞數(shù)據(jù)值。
// app.js App({ // 全局變量 globalData: { name: null } }) //pageA.js ··· getApp().globalData.name = "lin"; //pageB.js ··· this.setData({ userName: getApp().globalData.name });
要注意的問(wèn)題:
使用的時(shí)候,直接使用 getApp()
拿到存儲(chǔ)的信息。
適用:
這種方式一般適用于多個(gè)頁(yè)面或者全部頁(yè)面都需要獲取使用同一個(gè)數(shù)據(jù),比如一開始進(jìn)入首頁(yè)就獲取到的用戶信息等;
使用小程序中的本地緩存Storage
,舊頁(yè)面將傳遞數(shù)據(jù)存入緩存中,新頁(yè)面通過(guò)調(diào)用獲取緩存的API得到數(shù)據(jù)。
//pageA.js ··· wx.setStorageSync('sessionId', res.sessionId); //pageB.js ··· var sessionId = wx.getStorageSync('sessionId');
要注意的問(wèn)題:
Storage每次存入會(huì)覆蓋掉原來(lái)該 key 對(duì)應(yīng)的內(nèi)容。
如果用戶主動(dòng)刪除小程序或因存儲(chǔ)空間原因被系統(tǒng)清理,Storage中數(shù)據(jù)將被清除。
單個(gè) key 允許存儲(chǔ)的最大數(shù)據(jù)長(zhǎng)度為 1MB,所有數(shù)據(jù)存儲(chǔ)上限為 10MB。
適用:
這種方式一般適用于即使小程序退出然后再重新進(jìn)入,也要保留的數(shù)據(jù),類似于登錄狀態(tài)的保留等。
以上是“小程序頁(yè)面間傳遞數(shù)據(jù)的方式有哪些”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。