微信小程序监听公共js的数据变化
时间: 2023-12-08 07:03:24 浏览: 128
js 实现watch监听数据变化的代码
在微信小程序中,如果需要监听公共 js 中的数据变化,可以使用事件通知机制来实现。
具体步骤如下:
1. 在公共 js 中定义需要监听的数据,并导出一个事件触发函数:
```js
// common.js
let data = {
count: 0
}
const notifyCountChanged = () => {
const eventChannel = getApp().globalData.eventChannel
eventChannel.emit('countChanged', data.count)
}
const increaseCount = () => {
data.count++
notifyCountChanged()
}
module.exports = {
data,
increaseCount
}
```
2. 在 `App` 中定义一个全局事件通道:
```js
// app.js
App({
globalData: {
eventChannel: new EventEmitter()
}
})
```
3. 在需要监听公共 js 中数据变化的页面中,监听事件通道的 `countChanged` 事件:
```js
// page.js
const common = require('../../common.js')
const eventChannel = getApp().globalData.eventChannel
Page({
data: {
count: common.data.count
},
onLoad: function () {
eventChannel.on('countChanged', (count) => {
console.log('countChanged', count)
this.setData({
count: count
})
})
}
})
```
在 `onLoad` 生命周期函数中,使用 `eventChannel.on()` 方法监听 `countChanged` 事件,并在回调函数中更新页面中的数据。
当公共 js 中的数据变化时,调用 `notifyCountChanged()` 函数触发 `countChanged` 事件,从而通知所有监听该事件的页面更新数据。
需要注意的是,使用事件通知机制来监听公共 js 中的数据变化,会带来一定的性能开销,因此建议只在必要的情况下使用。
阅读全文