Vue-Router4 怎么在当前页面里获取上一个页面的路由?

2021-12-23 10:01:33 +08:00
 1sm23

钩子只有 onBeforeRouteUpdateonBeforeRouteLeave

2419 次点击
所在节点    Vue.js
12 条回复
weimo383
2021-12-23 10:08:37 +08:00
你只能监听路由变化,每次一变化就把他存进 store 里
1sm23
2021-12-23 10:12:26 +08:00
@weimo383 #1 只能这样吗,那不是开倒车了
sualvin
2021-12-23 10:15:43 +08:00
beforeRouteEnter 这个钩子里面的 from 参数拿不到吗?我看 4 的文档也有这个钩子啊
1sm23
2021-12-23 10:25:40 +08:00
@sualvin #3 这个钩子从哪导入,我在文档上看到了,但是页面上定义这个函数是 undefined
1sm23
2021-12-23 10:27:09 +08:00
@sualvin #3 好像 script setup 的用法不一样
这是正常的用法
```vue
setup() {
console.log('SETUP')
},
beforeRouteEnter(to, from, next) {
// Do something
next({ path: '/foo' }); // Go somewhere else if necessary
next(); // Or stay here
}
```
sualvin
2021-12-23 10:36:32 +08:00
@1sm23 #4 我刚才在 jsfiddle 试了下是可以的
sualvin
2021-12-23 10:37:36 +08:00
@sualvin #6 哦,我刚才没用 setup 的语法,就测了最基础的场景
daolanfler
2021-12-23 11:24:43 +08:00
daolanfler
2021-12-23 11:28:47 +08:00
@daolanfler 看错了,好像 setup 里面不支持 beforeRouteEnter ....
lin07hui
2021-12-23 11:40:03 +08:00
避免当前页面去获取其它页面的数据,刷新一下其它页面就没了
lx000377
2021-12-23 14:00:38 +08:00
在全局前置守卫或者后置钩子里把历史路由放在新路由的 meta 里,组件里用 route.meta.lastPath 读取
代码:
router.afterEach((to, from) => {
if (from) {
to.meta.lastPath = from.fullPath;
}
});
如图
https://s2.loli.net/2021/12/23/eErqCDp4Vs1oNZJ.png
1sm23
2021-12-23 14:16:27 +08:00
@lx000377 #11 想到一起去了,我现在也是这样做的哈哈

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/823903

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX