westore
westore copied to clipboard
如何在页面监听某个store变化执行某个函数
我试过使用onChange,但是不知道要怎么写 有DEMO吗?
没有。建议使用 onChange
但是onChange是怎么使用 假设我某个页面某个状态需要监听 那要如何使用?
不对 是监听某个全局 store*
store.onChange = function(){}
然后我使用的时候 是store里面某个值变化 它都会触发回调 但是我只想store.userInfo变化才回调那要怎么写?
store.onChange = function(diffResult){
//根据diffResult里的内容判断。里面有path的
}
多个页面使用会被覆盖
@thirking 这是一个全局方法,只需要在一个页面里面注册就行了,甚至于直接在 store.js 里面就可以
@thirking 这是一个全局方法,只需要在一个页面里面注册就行了,甚至于直接在 store.js 里面就可以
这个我明白,但是对一些场景不太方便,比如我两个页面分别需要针对这个状态的改变做不同的处理,这个时候,我需要分别在页面内写一个方法来处理。但是onChange只能指向一个方法。
我现在的处理方式,是在globalData中放置一个回调数组,当store触发change事件的时候,遍历执行此数组中的回调。这样我就可以在多个页面中,绑定多个change回调,针对不同页面的情况分别执行相应的处理。
globalData: {
onStoreChange: []
}
store.onChange = (e) => {
app.globalData.onStoreChange.forEach(cb => cb(e))
}
在页面中,我们就可以这样写
app.globalData.onStoreChange.push((e) => {
...do some thing
})
以上是我的一点小小的建议,总之感谢分享这个好用的库