91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2020-10-06 19:12:27 來源:腳本之家 閱讀:151 作者:kelen 欄目:web開發

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

當前頁面打開新的頁面

打開新的頁面可以通過 navigator 組件來實現,通過url傳參來實現,例如

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

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

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

新的頁面回傳數據到當前頁面

在當前頁面定義一個方法

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

在搜索頁面獲取到的結果,由于小程序頁面是通過棧來存儲的,所以可以通過 getCurrentPages() 獲取獲取當前頁面棧的實例,第一個元素為首頁,最后一個元素為當前頁面

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

生命周期和storage

通過 wx.setStorageSync() 方法可以在本地存儲數據,在 page 的 onShow 回調里獲取 storage 的值后做相應的處理,例如

// index.js
wx.setStorageSync('refresh', true);

// mycenter.js
if (wx.getStorageSync('refresh')) {
 // 做更新操作
 wx.removeStorageSync('refresh');
}

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

事件監聽

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

nsevent的用法也很簡單,只需要在監聽的頁面通過 nsevent.on() 來實現監聽,建議添加第三個參數命名空間,這樣可以在 onUnload 回調解綁相應的事件,舉個以下例子

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

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

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

附上小程序代碼片段,以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

山阴县| 柳林县| 林口县| 壤塘县| 古丈县| 临颍县| 牙克石市| 和平区| 潜江市| 山西省| 丹棱县| 都昌县| 德钦县| 临湘市| 犍为县| 农安县| 平湖市| 德庆县| 边坝县| 湟中县| 大同市| 榆社县| 乌审旗| 崇礼县| 棋牌| 万源市| 泰安市| 双城市| 新闻| 白朗县| 康定县| 肇源县| 临夏市| 庐江县| 皋兰县| 香河县| 山东省| 滨海县| 古丈县| 平安县| 宣武区|