在多个页面中需要同一个数据,而且每个页面都可能会对该数据进行修改,修改之后其它页面需要实时更新该数据。
监听全局变量一般用在这样的情境下⬆️
App({
globalData: {
followed: false, // 要监听的数据
listeners: [], // 存储监听器函数的数组
},
// 注册监听器函数的方法
registerListener: function (listener) {
this.globalData.listeners.push(listener);
},
// 触发监听器函数的方法
triggerListeners: function () {
var listeners = this.globalData.listeners;
for (var i = 0; i < listeners.length; i++) {
listeners[i]();
}
},
})
使用页面中
methods: {
onFollow() {
this.setData({
followed: !this.data.followed,
})
app.globalData.followed = this.data.followed;
app.triggerListeners();
},
onCurrentFollowChange: function () {
// 全局变量 followed 的值发生改变时,调用该函数
this.setData({
followed: app.globalData.followed
})
},
},
lifetimes: {
attached() {
app.registerListener(this.onCurrentFollowChange.bind(this));
},
},
不敢相信页面和组件加起来三五个的传值,我竟然……先手动传了数据😂后来看代码越来越乱感觉有点不对劲,才想起可以监听全局变量。最后发现我可以把这几个玩意儿放在一个页面里……但....整都整了记录一下也
tada~~~~在微信小程序中我们就可以监听全局变量啦💃