一区二区日本_久久久久久久国产精品_无码国模国产在线观看_久久99深爱久久99精品_亚洲一区二区三区四区五区午夜_日本在线观看一区二区

微信小程序跨頁(yè)面數(shù)據(jù)傳遞事件響應(yīng)實(shí)現(xiàn)過(guò)程解析

這篇文章主要介紹了微信小程序跨頁(yè)面數(shù)據(jù)傳遞事件響應(yīng)實(shí)現(xiàn)過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

在實(shí)際工作中有很多場(chǎng)景需要在第二個(gè)頁(yè)面中將用戶操作之后的將數(shù)據(jù)回傳到上一頁(yè)面。愛(ài)掏網(wǎng) - it200.com接下來(lái)將我的方案分享給小伙伴。愛(ài)掏網(wǎng) - it200.com 本次示例采用 uni-app 框架和 weui 樣式庫(kù) 實(shí)現(xiàn)思路 創(chuàng)建一個(gè) Emitter,用于事件處理 創(chuàng)建一個(gè) ...

在實(shí)際工作中有很多場(chǎng)景需要在第二個(gè)頁(yè)面中將用戶操作之后的將數(shù)據(jù)回傳到上一頁(yè)面。愛(ài)掏網(wǎng) - it200.com接下來(lái)將我的方案分享給小伙伴。愛(ài)掏網(wǎng) - it200.com

本次示例采用 uni-app 框架和 weui 樣式庫(kù)

實(shí)現(xiàn)思路

  • 創(chuàng)建一個(gè) Emitter,用于事件處理
  • 創(chuàng)建一個(gè)全局的 Storage
  • 在第一個(gè)頁(yè)面創(chuàng)建一個(gè) emitter 對(duì)象,并添加事件監(jiān)聽(tīng),將 emitter 存儲(chǔ)到 Storage 中
  • 在第二個(gè)頁(yè)面從 Storage 中取出 emitter 對(duì)象, 并觸發(fā)事件,將數(shù)據(jù)傳遞到第一個(gè)頁(yè)面中做處理

創(chuàng)建 Emitter

function isFunc(fn) {
 return typeof fn === 'function';
}

export default class Emitter {
 constructor() {
 this._store = {};
 }

 /**
 * 事件監(jiān)聽(tīng)
 * @param {String} event 事件名
 * @param {Function} listener 事件回調(diào)函數(shù)
 */
 on(event, listener) {
 const listeners = this._store[event] || (this._store[event] = []);

 listeners.push(listener);
 }

 /**
 * 取消事件監(jiān)聽(tīng)
 * @param {String} event 事件名
 * @param {Function} listener 事件回調(diào)函數(shù)
 */
 off(event, listener) {
 const listeners = this._store[event] || (this._store[event] = []);

 listeners.splice(listeners.findIndex(item => item === listener), 1);
 }

 /**
 * 事件監(jiān)聽(tīng) 僅監(jiān)聽(tīng)一次
 * @param {String} event 事件名
 * @param {Function} listener 事件回調(diào)函數(shù)
 */
 once(event, listener) {
 const proxyListener = (data) => {
  isFunc(listener) && listener.call(null, data);

  this.off(event, proxyListener);
 }

 this.on(event, proxyListener);
 }

 /**
 * 觸發(fā)事件
 * @param {String} 事件名
 * @param {Object} 傳給事件回調(diào)函數(shù)的參數(shù)
 */
 emit(event, data) {
 const listeners = this._store[event] || (this._store[event] = []);

 for (const listener of listeners) {
  isFunc(listener) && listener.call(null, data);
 }
 }
}

創(chuàng)建 Storage

export class Storage {
 constructor() {
 this._store = {};
 }

 add(key, val) {
 this._store[key] = val;
 }
 
 get(key) {
 return this._store[key];
 }
 
 remove(key) {
 delete this._store[key];
 }
 
 clear() {
 this._store = {};
 }
}

export default new Storage();

第一個(gè)頁(yè)面中的處理

第二個(gè)頁(yè)面中的處理

傳送門(mén)

github

總結(jié)

之所以將Storage定義成全局的,是為了保證第一個(gè)頁(yè)面放到Storage中和第二個(gè)頁(yè)面從 Storage 中取出的emitter是同一個(gè)實(shí)例,如此第一個(gè)頁(yè)面才能正確監(jiān)聽(tīng)到第二個(gè)頁(yè)面觸發(fā)的事件。愛(ài)掏網(wǎng) - it200.com也可以使用 vuex,將 emitter 放到 state 中。愛(ài)掏網(wǎng) - it200.com

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持。愛(ài)掏網(wǎng) - it200.com


聲明:所有內(nèi)容來(lái)自互聯(lián)網(wǎng)搜索結(jié)果,不保證100%準(zhǔn)確性,僅供參考。如若本站內(nèi)容侵犯了原著者的合法權(quán)益,可聯(lián)系我們進(jìn)行處理。
發(fā)表評(píng)論
更多 網(wǎng)友評(píng)論0 條評(píng)論)
暫無(wú)評(píng)論

返回頂部

主站蜘蛛池模板: 欧美日韩国产中文字幕 | 亚洲一区二区 | 夜久久 | 一区二区三区四区在线视频 | 九九热在线免费观看 | 亚洲精品一区二区三区蜜桃久 | 日韩一二三 | 福利视频二区 | 久久久中文 | 久久看看 | 粉嫩粉嫩芽的虎白女18在线视频 | 天堂综合网 | 亚洲国产区 | 亚洲啊v| 日韩中文电影 | 国产精品美女www爽爽爽 | 日韩欧美在线不卡 | 九九热九九 | 特级黄一级播放 | 中文精品视频 | 成人亚洲视频 | 欧美一区二区三区视频在线观看 | 国产日韩欧美 | 色欧美片视频在线观看 | 久久综合狠狠综合久久综合88 | 欧美激情久久久 | 麻豆av在线免费观看 | 91精品亚洲 | 精品九九| jlzzjlzz欧美大全 | 久久91| 欧美成人aaa级毛片在线视频 | 一级免费毛片 | 日本激情视频网 | 免费的黄色片子 | 久久久久亚洲 | 亚洲不卡在线观看 | caoporn免费在线视频 | 久草新在线 | 在线视频成人 | 欧美日韩在线一区二区 |