Results 14 comments of meowmeow

[myTaro3APP-react.zip](https://github.com/NervJS/taro/files/9571726/myTaro3APP-react.zip) 这是一个最小化复现的工程

另外补充,使用create-react-app创建的react项目,使用react-router(v5.3.3)提供的Prompt进行同样的操作,没有卡顿,测试页面文件路径为: my-react-app/src/test.js [my-react-app.zip](https://github.com/NervJS/taro/files/9571742/my-react-app.zip)

> 关掉动画试试 1. taro的路由动画是关闭的,配置如下图 2. safari的手势动画是系统自带的,无法关闭

> 明白你的意思了,这在 iOS 中确实是个问题,但由于系统原因这个问题并不能在框架层面被修复 > > > 唯一可以禁用返回上一页滑动的方法是打开通过打开新的标签页跳过返回(由于这是一个破坏性的方案,并不会集成到框架中,可以由开发者自行选择使用) 那我还有一个疑问哦,我这边使用create-react-app创建了项目,项目里面使用react-router(v5.3.3)的Prompt来实现同样的拦截效果,在ios端就不会出现类似的情况,滑动返回非常流畅 我也看了react-router的Prompt的源码(https://github.com/remix-run/react-router/blob/v5/packages/react-router/modules/Prompt.js) 里面的原理 跟你们在https://docs.taro.zone/docs/h5#%E8%B7%AF%E7%94%B1%E5%AE%88%E5%8D%AB 这个文档里提供的方法原理是一样的,都是通过history.js提供的block方法实现的

我们也尝试过用safari分析页面返回的时间线,发现这中间有2秒时间的空白,从safari浏览器中无法得知这2秒的空白发生了什么,B页面返回A页面,在safari中记录的时间线,如下图

> > > 那我还有一个疑问哦,我这边使用create-react-app创建了项目,项目里面使用react-router(v5.3.3)的Prompt来实现同样的拦截效果,在ios端就不会出现类似的情况,滑动返回非常流畅 我也看了react-router的Prompt的源码([https://github.com/remix-run/react-router/blob/v5/packages/react-router/modules/Prompt.js)](https://github.com/remix-run/react-router/blob/v5/packages/react-router/modules/Prompt.js%EF%BC%89) 里面的原理 跟你们在https://docs.taro.zone/docs/h5#%E8%B7%AF%E7%94%B1%E5%AE%88%E5%8D%AB 这个文档里提供的方法原理是一样的,都是通过history.js提供的block方法实现的 > > 拦截时机不一样吧,你也可以在相关的生命周期拦截试试 我在Taro3中也尝试了在wiillUnMount的时候做跟react-router一样的拦截操作,一样的会卡顿

> unmount 事件不太会有用,卸载时路由变更应该还没有生效 react-router就是在unmount的时候调用的哦,效果是对的呢

> > useLoad、useReady 试过么🤔 > > 这俩没有试过,我试一下 我理解了一下,这俩不能实现我说的效果吧,离开当前页面的时候怎么可能会触发load和ready呢?

> > react-router就是在unmount的时候调用的哦,效果是对的呢 > > 路由的逻辑是有区别的,触发时机不一致不能一概而论(Taro 并不一定会在路由变更时触发 unmount 事件,实际上是也可能是 hide 事件) > > > 我理解了一下,这俩不能实现我说的效果吧,离开当前页面的时候怎么可能会触发load和ready呢? > > 确实是,不过还有一个事件是早于 taro 触发 unmount 事件的,可以通过 history.listen 或者浏览器的 popstate 事件直接监听路由变更来判断 Taro1.x里面有一个生命周期是beforeRouteLeave,我看了这个里面的实现,是通过监听 popstate 来监听路由变化,再根据路由变化及用户操作确定是否进行拦截,那里边有同样的问题,因为框架版本较低才来拿最新版做实验,出了同样的问题才说要反馈下的