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

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);
}

该问题目前已经被锁定, 无法添加新回复

  • 标题 / 粗斜体
  • 代码片段
  • 超链接 / 图片 / 视频
  • 列表 / 引用

文章内容较多时,可以用标题分段 :

## 大标题 
### 小标题

斜体 / 粗体 :

**粗体** 
*斜体*
***粗斜体***

代码片段 :

``` javascript
代码片段
```

超链接 :

[链接文字](链接地址) 例: [百度](http://www.baidu.com)

图片 :

![图片说明](图片地址) 例: ![百度logo](http://www.baidu.com/img/bdlogo.gif)

视频 :

!![视频说明](视频地址) 例: !![优酷视频](http://youku.com)

有序列表 :

1. 123
2. 123
3. 123

无序列表 :

- 123
- 123
- 123

引用 : ( 双回车后结束引用 )

> 引用内容
引用内容
引用内容