国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

詳解小程序不同頁面之間通訊的解決方案

2024-05-06 15:27:46
字體:
供稿:網(wǎng)友

小程序做開發(fā)的時(shí)候難免需要不同頁面之間的通訊,比如首頁打開新的頁面搜索獲取結(jié)果返回到首頁,不同tab頁面之間的數(shù)據(jù)交互等等。于是做了以下總結(jié)

當(dāng)前頁面打開新的頁面

打開新的頁面可以通過 navigator 組件來實(shí)現(xiàn),通過url傳參來實(shí)現(xiàn),例如

<navigator url="../search/search?id=123" open-type="redirect">搜索</navigator>

在新的頁面 onLoad 事件可以拿到傳過來的參數(shù) options

onLoad: function(options) { console.log(options.id);}

新的頁面回傳數(shù)據(jù)到當(dāng)前頁面

在當(dāng)前頁面定義一個(gè)方法

searchRet(results) { console.log(results);}

在搜索頁面獲取到的結(jié)果,由于小程序頁面是通過棧來存儲(chǔ)的,所以可以通過 getCurrentPages() 獲取獲取當(dāng)前頁面棧的實(shí)例,第一個(gè)元素為首頁,最后一個(gè)元素為當(dāng)前頁面

let pages = getCurrentPages();let homePage = pages[pages.length - 2];if (homePage) { homePage.searchRet(results);}

生命周期和storage

通過 wx.setStorageSync() 方法可以在本地存儲(chǔ)數(shù)據(jù),在 page 的 onShow 回調(diào)里獲取 storage 的值后做相應(yīng)的處理,例如

// index.jswx.setStorageSync('refresh', true);// mycenter.jsif (wx.getStorageSync('refresh')) { // 做更新操作 wx.removeStorageSync('refresh');}

storage 也可以用 globalData 來代替,原理一樣,這里不做展開,兩種辦法都可行,但是就是太笨了,場景復(fù)雜起來沒法搞 😫

事件監(jiān)聽

個(gè)人感覺通過全局的事件監(jiān)聽來處理是一個(gè)很好的方法,在 Page 頁面監(jiān)聽事件,通過在另一個(gè) Page 觸發(fā)相應(yīng)的事件,就可以做對應(yīng)的處理,實(shí)時(shí)高效,于是我封裝了一個(gè)可以聲明命名空間的事件監(jiān)聽器 nsevent ,可以通過 npm 安裝到小程序(微信官方npm使用方法)

nsevent的用法也很簡單,只需要在監(jiān)聽的頁面通過 nsevent.on() 來實(shí)現(xiàn)監(jiān)聽,建議添加第三個(gè)參數(shù)命名空間,這樣可以在 onUnload 回調(diào)解綁相應(yīng)的事件,舉個(gè)以下例子

// select.jsconst nsevent = require('nsevent');Page({ onLoad() {  nsevent.on('add', (num) => {   console.log(`select.js接收到add事件,參數(shù)為${num}`)  }, 'select.js') }, addnumber() {  nsevent.emit('add', 1); }, onUnload() {  console.log('select.js移除add事件')  nsevent.off('add', 'select.js'); }});

emit方法不僅可以觸發(fā)普通的事件,也可以觸發(fā)指定命名空間的事件,比如 pageA 和 pageB,pageC 都監(jiān)聽了 locationChange 事件,在 pageC 頁面想單獨(dú)觸發(fā) pageA 的回調(diào),可以這樣寫 😀

nsevent.emit('locationChange', { ns: ['pageA'] });

附上小程序代碼片段,以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持錯(cuò)新站長站。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 黑水县| 靖西县| 霍山县| 五台县| 札达县| 丘北县| 隆安县| 右玉县| 鹿泉市| 财经| 庐江县| 合水县| 平原县| 商城县| 彭山县| 道真| 丹巴县| 搜索| 峨山| 天长市| 大宁县| 宜春市| 中江县| 漳州市| 蕉岭县| 宝鸡市| 安达市| 阳曲县| 南皮县| 黑河市| 布拖县| 宜兴市| 轮台县| 社旗县| 富川| 忻城县| 偃师市| 焦作市| 波密县| 大宁县| 山阳县|