Vue3中onMounted执行的时候route是否还没更新?
需求
想通过动态组件来实现根据URL自动切换组件,然后发现跳转后route的params拿不到了
这是我的路由表
const routes = [ {
path: "/",
name: "Root",
redirect: "Post",
children: [
{
path: "Post",
name: "Post",
redirect: "Post/List",
component: Post,
children: [
{
path: "List",
name: "PostList",
component: PostList,
},
{
path: "Details/:id",
name: "PostDetails",
component: PostDetails,
},
],
},
],
},
]
项目结构
PostList遍历了多个PostCard
每个PostCard上都有一个num字段作为ID
点击PostCard进入到PostDetails页面,此时会把num作为动态路由的参数
PostDetails会在onMounted阶段根据URL上的ID来执行API获取内容
尝试解决
这是PostCard组件上的跳转方法,其中cardNum可以保证是正确有效的。
我尝试过name和path两种方式,均不能从onMounted中拿到route.params (是空的)
浏览器上的URL能成功跳转,组件也加载成功,但是参数拿不到
根据URL直接访问可以能拿到params
上面说到,我在onMounted里面打印了route.params发现是空的,于是我尝试了watch,竟然监听到了。
疑问
onMounted执行的时候route是不是还没有更新完成?
有没有其他方式可以获取到route中的params(比较正式的,用于项目中的)
还有就是我这个实现方案是不是有问题,想的时候在Post里面切换内容的时候做到Post的组件内容不刷新,内容变化这个效果。之前也没做过这类似的项目,目前还在摸索阶段,希望有大佬可以指点迷津,非常感谢!
回答:
都渲染完了为啥还没更新?是不是别的地方写错了
回答:
beforeUpdate()试一下
以上是 Vue3中onMounted执行的时候route是否还没更新? 的全部内容, 来源链接: utcz.com/p/933327.html