⼩程序通信⽅式----5种通讯分类
1、兄弟页⾯间
2、⽗页⾯跳⼦页⾯
3、⼦页⾯跳⽗页⾯
激活时期
1、延迟激活 等待当前页⾯时间响应完成后再触发依赖页⾯
2、⽴即激活 当前页⾯响应之前就触发依赖页⾯
五种通讯⽅式
1、onShow/onHide + localStorage
wx.clearStorageSync('__data') //清除上次通讯数据
wx.setStorageSync('__data') //设置通信数据
记得清除通信数据,否则可能出问题
有可能localStorage会读取失败,导致通信失败
页⾯初始化也会触发onShow
2、onShow/onHide + globalData
app = getApp()
app.$$data.XX = null //清除上次通讯数据
app.$$data.XX = XX//设置通信数据
globalData污染
页⾯初始化也会触发onShow
3、eventBus(或者是pubsub) 事件发布订阅写文章的小程序
on emit off
4、globalData + watcher
使⽤oba开源库
oba(app.$$data,(prop,newVal,oldVal)=>{
})
这叫数据驱动
5、推荐 通⽤hack直接调⽤通信页⾯⽅法
// plugin/pages.js
// 缓存pageModel,⼀个简要实现
export default class PM {
constructor() {
this.$$cache = {};
}
add(pageModel) {
let pagePath = this._getPageModelPath(pageModel);
let pagePath = this._getPageModelPath(pageModel);
this.$$cache[pagePath] = pageModel;
}
get(pagePath) {
return this.$$cache[pagePath];
}
delete(pageModel) {
try {
delete this.$$cache[this._getPageModelPath(pageModel)]; } catch (e) {
}
}
_getPageModelPath(page) {
// 关键点
return page.__route__;
}
}
// pageA
let app = getApp();
Page({
data: {
helloMsg: 'hello from PageA'
},
onLoad() {
app.pages.add(this);
},
goC() {
wx.navigateTo({
url: '/pages/c/c'
});
},
sayHello(msg) {
this.setData({
helloMsg: msg
});
}
});
//pageC
let app = getApp();
Page({
doSomething() {
/
/ 见证奇迹的时刻
('pages/a/a').sayHello('hello u3xyz');
}
});
app.pages.add()
('路径').fn('xxx')
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论