Elmentui使用keep-alive动态缓存页面

keep-alive实现缓存

keep-alive是vue提供的一个组件方法

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

缓存页面,返回不刷新,这里只缓存meta中keepAlive的值为true的页面

在路由的index.js中 将其meta属性加入keepAlive,希望缓存的页面加入vue属性即可

{
   path: '/man',
   component: Index,
   meta: { keepAlive: true }}
}

但是 这还是不满足于书签的需求 当其书签页取消后 再进入路由 数据没有被清空
当需要动态设置是否缓存时 可以用vue新增的两个属性inlcude/exclude

动态设置缓存include/exclude属性

需要注意的是include/exclude绑定的属性是页面中设置的name值 而不是路由中的name值
基础使用方法

<keep-alive include="Main">
      <router-view ></router-view>
</keep-alive>
export default {
   name:'Main'
  data(){
      return{}
   }
}

当在实际项目中 可以运用vuex保存你需要缓存的页面的name值(如果是利用router-link跳转可以在route.js的meta中设置name值 在跳转时可以获取到)

import Vue from "vue";
import Vuex from "vuex";
 
Vue.use(Vuex);
 
export default new Vuex.Store({
    state: {
        keepAlive: []
    },
    mutations: {
        setKeepAlive: (state, keepAlive) => {
            state.keepAlive = keepAlive;
        }
    },
    getters: {
        keepAlive: state => state.keepAlive
    }

在vue页面上加入keepalive动态判断

<template>
  <div class="app">
    <keep-alive :include="keepAlive" >
      <router-view/>
    </keep-alive>
  </div>
</template>

<script type='text/javascript'>
export default {
  data () {
    return {}
  },
  computed: {
    keepAlive () {
      return this.$store.getters.keepAlive
    }
  }
}
</script>
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值