使用uniapp框架开发微信小程序时,遇到个巨坑uni.$emit()
会多次触发uni.$on()
,仔细看文档后发现:
巨坑的地方就是uni.$on()
可以重复注册监听,这就会导致多次关闭打开页面后uni.$emit()
会触发多个监听事件,但正常需求都只需要uni.$on响应一次就行。
解决方法:
在入门main.js处增加:
let onFun = uni.$on;
uni.$on = (eventName,obj) =>{
try {
uni.$off(eventName);
} catch (error) {}
onFun(eventName,obj);
}
重写uni.$on
默认在$on之前先移除需要监听的eventName,再挂载监听,这就能保证$on只会监听一次