仲夏夜之梦
仲夏夜之梦
  • 发布:2022-04-02 13:58
  • 更新:2023-03-11 14:48
  • 阅读:1594

uni.$once触发两次

分类:uni-app

使用uniapp开发小程序,在首页onShow中注册了 uni.$once('login' ...事件,在登录页登录后触发uni.$emit('login'...,有时候触发一次正常,有时候会触发两次uni.$once。 但是uni.$emit是只执行了一次,但是触发了两次uni.$once,这是什么原因呢?有什么解决方案?

2022-04-02 13:58 负责人:无 分享
已邀请:
哈哈柚

哈哈柚

打印下,onshow是否执行了多次

  • 仲夏夜之梦 (作者)

    打印了,onShow是执行了一次

    2022-04-02 14:30

  • 仲夏夜之梦 (作者)

    但是uni.$once中的内容执行了两次

    2022-04-02 14:30

1***@qq.com

1***@qq.com

看看代码

仲夏夜之梦

仲夏夜之梦 (作者) - 仲夏夜

代码如图

仲夏夜之梦

仲夏夜之梦 (作者) - 仲夏夜

在首页onshow中注册的uni.$once,在进登录页面之前来回点了好几次首页,这样的话是不是就注册了好几次,完了触发一次也会执行多次?

史蒂芬丿闰土

史蒂芬丿闰土

解决了吗,我现在是加了判断,反正不管他发送多少次,我想让他调用的方法只会执行一次

  • 仲夏夜之梦 (作者)

    解决了,我在注册once前先进行off,这样的话就只有一次

    2022-04-26 16:35

  • 史蒂芬丿闰土

    回复 仲夏夜之梦: OK,我现在是也加了off,被调用的函数里面也加了判断,防止二次触发

    2022-04-27 21:38

jcomee

jcomee

在入门main.js处增加:

let onFun = uni.$on;
uni.$on = (eventName,obj) =>{
try {
uni.$off(eventName);
} catch (error) {}
onFun(eventName,obj);
}

要回复问题请先登录注册