dcloudio / dcloudio/uni-app

报告一个框架bug

Open
#2,693 0 comments 0 reactions 1 assignee Claimed by @Otto-J View on GitHub
提供了复现方案
Dominant language
JavaScript
Stars
41.6k
Forks
3.7k
Avg merge
7h 6m
Merged PRs (30d)
6

Description

**问题描述**
不知道能不能表述的清楚,但是我试了很多次是必现的。

**复现步骤**
现在小程序有A1页面,A2页面,A3页面。
1. A1页面中有一个按钮,逻辑很简单 ,uni.navigateTo({url: A2,fail(){}}) 跳向A2路由 (注意下我这里回调只用了一个fail,这将是bug的必现条件)
2. A2页面也有一个按钮,逻辑也很简单,是跳向A3的 ,但是注册了一个从A3返回到A2的一个回调函数
uni.navigateTo({
url: A3,
success:({eventChannel}) => {
eventChannel.on('backFromA3', data => {
console.log('receive backFromA3')
});
}
})
3. A3页面页面也有一个按钮,是back回A2的,顺便发了一个指令函数给A2的监听回调
uni.navigateBack({success:() => {
this.getOpenerEventChannel().emit('backFromA3');
}});

**预期结果**
预期结果,应该是A3点击back按钮回到A2的时候,应该触发回调,打印出 'receive backFromA3' 信息。

**实际结果**
A3点击back按钮回到A2的时候没有打印出任何信息,但是如果在点击一下A2中的按钮的时候才会触发打印信息,打印时机错落。
我这边排查下来的结果是,A1在navigatorTo A2的时候,不能只传入一个fail() 回调 ,得和success联用才行,即使success里面啥逻辑都没有,或者和complete联用,反正就是不能单独使用fail(),不然会导致后面A2 A3页面的未知问题。

**系统信息:**
- 发行平台: [如 微信小程序、H5平台、5+ App等]
- 操作系统 [如 iOS 12.1.2、Android 7.0]
- HBuilderX版本 [如使用HBuilderX,则需提供 HBuilderX 版本号]
- uni-app版本 [如使用Vue-cli创建/运行项目,则提供`npm run info`的运行结果]
- 设备信息 [如 iPhone8 Plus]

**补充信息**
[可选]
[根据你的分析,出现这个问题的原因可能在哪里?]

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.