vue 路由元信息meta属性应用

用keep-alive通常缓存组件会这样做:

<keep-alive>
    <router-view></router-view>
</keep-alive>

如果想单独缓存哪一些组件需要这样:

<keep-alive>
    <component-A></component-A>
    <component-B></component-B>
</keep-alive>

上边的方法显然不是最优的,如果有100个组件,90个组件需要缓存,你还要写挨个写吗?

我们可以在每个路由对象meta中添加一个状态,使用$route.meta.xxx来获取这个状态,使用v-show判断组件是否被缓存:

<template>
  <div id="app">
      <keep-alive v-if="$route.meta.isKeepAlive">
        <router-view/>
      </keep-alive>

      <keep-alive v-if="!$route.meta.isKeepAlive">
        <router-view/>
      </keep-alive>
  </div>
</template>

在路由中的配置:

const router = new VueRouter({
    routes:[
        {
            path:'/',
            name:'home',
            component:home,
            meta:{isKeepAlive:true}
        },
        {
            path:'/news',
            name:'news',
            component:news,
            meta:{isKeepAlive:true}
        },
        {
            path:'/play',
            component:play,
            meta:{isKeepAlive:false}
        },
    ]
})

2、利用元信息 动态显示 网页标题

import Vue from 'vue'
import VueRouter from 'vue-router'
Vue.use(VueRouter)
const routers = [
    {
        path: '/',
        component: First,
        meta: {
            name: 'first'
        }
    },
    {
        path: '/sec',
        // redirect: '/',
        component: sec,
        meta: {
            name: 'second'
        }
    }
]
const router = new VueRouter({
    routes: routers
})
router.beforeEach((from, to , next) => {
    if(to.meta.name) {
        document.title = to.meta.name
    }else {
        document.title = '默认'
    }
    next()
})
export default router

 

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值