需求背景
- A B C 三个页面
- A => C ,通过 router.push 进入。
- B => C ,通过 router.repace 进入。
需求:
在 C 页面需要判断是 replace 还是 push 来进行特殊的操作。
问题: vue-router 是否有这样的方式呢?
需求背景
需求:
在 C 页面需要判断是 replace 还是 push 来进行特殊的操作。
问题: vue-router 是否有这样的方式呢?
Vue Router本身没有直接提供判断当前页面是通过router.push还是router.replace进入的方法。
但可以通过一些变通的方式来实现类似的功能。
一种方法是在切换页面时,传递一个自定义的参数来标识是通过router.push还是router.replace进入的。下面是一个示例:
在触发页面切换时,传递一个自定义参数:
// 在页面 A 中
this.$router.push({ path: '/C', query: { method: 'push' } });
// 在页面 B 中
this.$router.replace({ path: '/C', query: { method: 'replace' } });
在页面 C 中,通过this.$route.query.method来获取传递的参数,从而判断是通过push还是replace进入的:
export default {
mounted() {
const method = this.$route.query.method;
if (method === 'push') {
// 通过 push 进入的特殊操作
} else if (method === 'replace') {
// 通过 replace 进入的特殊操作
}
}
}
虽然这种方法并不是直接判断当前页面是通过router.push还是router.replace进入的,但通过传递参数的方式,可以达到类似的效果。
6 回答3k 阅读✓ 已解决
8 回答4.7k 阅读✓ 已解决
6 回答3.4k 阅读✓ 已解决
6 回答2.3k 阅读
5 回答6.3k 阅读✓ 已解决
3 回答2.5k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
首先感谢上面答主的回答。经过查阅相关文档,最后发现一个更优雅的解决方案,Vue router 在 window.history.state 上附加了几个新的属性。
其中包含一个属性叫做 replaced:Boolean ,用来判断当前页面是如何进入的。