639 Star 4.1K Fork 806

GVPDCloud / uni-app

 / 详情

根组件 App.vue 发送事件, 页面 uni.$once 监听 实测多次发送事件 uni.$once 依然多次触发

已关闭
创建于  
2021-08-15 15:09

示例:

App.vue

onLaunch() {
    uni.$emit('app-before-ready')
    setTimeout(() => uni.$emit('app-before-ready'), 2000)
}

index.vue

created() {
    uni.$once('app-before-ready', () => {
        // 这里事件监听回调会多次触发, 并没有在触发后一次即取消监听
    })
}

评论 (4)

Dante 创建了任务
Dante 关联仓库设置为DCloud/uni-app
Joker 修改了描述
展开全部操作日志

我这里测试没有这个问题,$once执行一次后不再执行


  1. 在什么平台使用的?
  2. 你这个用法挺神奇的,是什么业务需要这样的操作逻辑?
  1. 微信小程序(Cli 创建),发布的体验版、本地开发环境都是这样的
  2. setTimeout 这句话只是测试用的,这边项目接手后暂时只能用此操作,启动页(等待App中准备完成再进行跳转)和App(onLaunch 阶段什么登录、用户信息、应用的一些配置啊这些需要获取完后再发送事件给"启动页")
  1. 应该是 development、test 环境是这样的

使用 2.0.0-alpha-32620210831003 测试没有你说的问题,你可以试试。

崔红保 任务状态待办的 修改为已取消

登录 后才可以发表评论

状态
负责人
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
参与者(2)
1713334 joker486 1578958343
JavaScript
1
https://gitee.com/dcloud/uni-app.git
git@gitee.com:dcloud/uni-app.git
dcloud
uni-app
uni-app

搜索帮助