VueJS3:从路由定义中传递数据

Posted

技术标签:

【中文标题】VueJS3:从路由定义中传递数据【英文标题】:VueJS3: Passing data from route definition 【发布时间】:2021-03-02 12:23:07 【问题描述】:

使用 Vue3。我想设置路由定义中允许的角色,然后在beforeRouteEnter 中使用该值。比如:


    path: "secure/page",
    name: "SecurePage",
    component: SecurePage,
    params: role: admin,

然后

const guard = 
    template: `...`,
    beforeRouteEnter (to, from, next) 
        next(vm => 
            if( 'admin' === vm.$route.params.role) 

            
        )
    ,

因为它不起作用。有没有可能?

【问题讨论】:

router.vuejs.org/guide/advanced/meta.html 【参考方案1】:

当您尝试时,您无法从视图访问路由器params 定义。你需要这样的东西:


    path: "secure/page",
    name: "SecurePage",
    component: SecurePage,
    meta:  role: 'admin' 

然后在视图中而不是vm.$route.params.role 使用vm.$route.meta.role

beforeRouteEnter(to, from, next) 
    next(vm => 
        if ('admin' === vm.$route.meta.role) 

        
    )

你知道,beforeRouteEnter 守卫确实可以访问这个,因为守卫在导航确认之前被调用,因此新的进入组件甚至还没有创建。

您可以在此处找到有关元字段的更多信息: https://router.vuejs.org/guide/advanced/meta.html

【讨论】:

以上是关于VueJS3:从路由定义中传递数据的主要内容,如果未能解决你的问题,请参考以下文章

如何将数据从 laravel 传递到 Vue Router?

不将数据从服务方法传递到猫鼬获取路由以使用 Angular IO 查询数据

Laravel - 使用惯性访问路由来填充 Vuejs3 中的道具

如何将自定义数据从ui-router中的视图传递到某个状态?

颤振使用路由将数组数据从一个屏幕传递到另一个屏幕

在laravel中查看路由动态数据数组