Vue-router 不能判断是跳转还是返回的问题怎么解决?

上一下你的源码?

你的可以用吗?我的源码就是上面贴的官网文档的代码,最后发现toDepth和fromDepth他们的值是相等的

你是从什么 from 变成什么 to?

这个是我的路由配置,然后跳转的时候直接在router里面去跳转的,什么from变成什么to?不太懂你什么意思

你可能没理解示例里的意思。

$route 是路由信息对象,表示当前所在的路由。页面跳转时它的值会发生变化,这个变化可以被 watch 捕获,于是就有了两个变量 tofrom(对应 watch 函数的 valoldVal)。示例表达的是这样一种情况:

// 跳转前
/user/somebody // path.split('/').length === 3

// 跳转后
/users // path.split('/').length === 2

OK,看起来用户执行了「向上一层」的动作,那么应该是「返回(到上一层)」了。

而我猜你的情况是:

// 跳转前
/index // path.split('/').length === 2

// 跳转后
/reg // path.split('/').length === 2

判断不出来啊!单从路径层数无法判断用户是怎么来的,你需要手动实现历史比对的逻辑。

手动实现历史比对的逻辑?好吧,我的情况正是你说的第二种情况,但是怎么才能做到他的watch的val和oldVal层数不一样呢?

你的业务设计就是这样,你的目标不应该是设法改变路径的层数。

回过头来想一想,怎样算返回?用户导航到了上一个路径。怎样算跳转?用户导航到了跟上一个路径不同的路径。那么,上一个路径是什么?

那这样子就是去记录他上个的导航路径?然后去判断to是否跟记录的路径一样?如果是这样子的话,如果他跳转的路径刚好跟他上个页面的路径一样的话,那他跳转的动效就不是返回了,而是跳转动效了

导航路径和上一个路径相同的话不就是刷新吗,也要区分跳转和返回?

我现在的需求是想做跳转和返回左右滑动的动效,刷新是当前地址和跳转地址一样才算刷新吧,而不是跳转地址和上一个地址一样

你的意思是用户从 /index 跳到 /reg 再跳到 /index 算两次跳转?你可以再记录一些状态嘛,比如用户是否登录之类的。实际上人的理解也是判断多个状态啊。

嗯,我觉得router的操作都算跳转吧,只有点返回按钮的时候才算返回吧!但是到头来还是说明vue-router本事还是没法自己去判断用户是否在进行返回操作,只有自己去想办法记录

出于安全因素,浏览器不对 JS 暴露 History 数据,所以不是 Vue 不想做。

你可以试试这个:

求问您最后怎么解决的,可否给小弟一个思路