• 九、Vue Router 进阶路由元信息meta


    路由元信息 meta

    在路由列表中,每个路由都有一个 meta元数据字段,我们可以在这里配置一些自定义信息,供页面组件或路由钩子函数中使用。在路由跳转的时候,提供我们判断条件。

    <script>
    	// 配置 meta 数据
        const router = new VueRouter({
            routes: [
                {
                    path: '/',
                    name: 'index', // 路由名称
                    component: index, // 映射的组件
                    meta: {
                        title: '首页'
                    }
                }
            ] 
        });
    </script>
    

    在组件中获取 meta 数据

    <template>
    	<div>
        	<h1>{{ $route.meta.title }}</h1>	
        </div>
    </template>
    

    在路由钩子中获取 meta 数据,一般用于: 改变网页标题,用户登录鉴权

    // 全局路由改变前导航守卫
    router.beforeEach((to, from, next) => {
    	// 通过元信息,改变对应网页的标题
        window.document.title = to.meta.title;
        next();
    });
    // 注意:meta数据可以动态修改,如:this.$route.meta.title = '改变后的首页'
    

    示例: 用户登录鉴权, 如果没有登录则跳转登录界面

    router.beforeEach((to, from, next) => {
        // 判断是否需要登录
        if (to.matched.some(record => record.meta.login )) {
            if (!login) { // 未登录,则跳转到登录界面
                next({ 
                    path: '/login',
                    query: { redirect: to.fullPath } // 记录登录后跳转到来源页面
                })
            } else {
                next();
            }
        } else {
            next(); 
        }
    });
    

    Array some() 方法

    用于检查数组中的原生是否满足指定条件,该方法会依次执行数组的每一个元素。**如果有一个元素满足条件,则返回true,否则返回false

    var arr = [
        { login: true },
        { title: 'login' } 
    ]
    arr.some((item) => item.login);  // 返回true
    
  • 相关阅读:
    暑期实践
    noi前第十九场 题解
    noi前第十八场 题解
    noi前第十七场 题解
    noi前第十六场 题解
    noi前第十五场 题解
    noi前第十四场 题解
    noi前第十三场 题解
    [NOI2017]游戏「2-SAT」
    空间宝石「最短路+线段树」
  • 原文地址:https://www.cnblogs.com/yuxi2018/p/11967281.html
Copyright © 2020-2023  润新知