无法顺利使用wx.offThemeChange;如何使用该函数?
【使用的是最新版的小程序基础库。事实上该问题与基础库版本无关】
我想实现一个简单的功能:在页面载入后监听黑夜主题变化,并且页面销毁时取消监听。然而目前的小程序引擎设计似乎无法实现该功能,尤其是“页面销毁时取消监听”。实例代码如下。
如果页面Unload时会自动wx.offThemeChange,请告知、并在小程序文档中也注明;如果必须通过污染全局来绕过该问题,那么请小程序团队修复该设计缺陷;如果有正常的解决方法,请麻烦附上代码范例片段。
Page({
someOnThemeChangeHandler(result) {
// 为了在事件handler中能使用this,必须把handler写作Page的一个属性
this.setData({/* 处理themeChange事件 */});
},
onLoad() {
// 保存this上下文
const handler = this.someOnThemeChangeHandler.bind(this);
// 在页面载入后开始监听
wx.onThemeChange(handler)
// 注:直接写wx.onThemeChange(this.someOnThemeChangeHandler)显而易见是不行的
},
onUnload() {
// 我想在这里取消监听,但是显然无法做到
// wx.offThemeChange(this.someOnThemeChangeHandler)显而易见是不行的
// wx.offThemeChange(this.someOnThemeChangeHandler.bind(this))也是不行的
// 因为const a = someFunction.bind(someContext); const b = someFunction.bind(someContext);有a不等于b
// 我必须传入onLoad scope中的handler变量才可以
},
})