美文网首页
动态keep-alive

动态keep-alive

作者: 杯莫停_5273 | 来源:发表于2019-06-25 12:48 被阅读0次

自己做了一个,从home到about时,about要做缓存,从manage进入about时about又不做缓存;

实现原理

路由跳转之前判断是否需要缓存,需要的话讲需要缓存的组件的 name 值存入一个数组,保存到vuex。app.vue 里面导入需要缓存的组件名

我是用脚手架搭建的

需要用到的东西有vue-router和vuex,实现方式如下

app.vue

<template>
  <div class="app">
    <div class="nav">
      <router-link :to="{name:'home'}">首页</router-link>
      <router-link :to="{name:'about'}">关于</router-link>
      <router-link :to="{name:'manage'}">管理</router-link>
    </div>
    <keep-alive :include="needInclude">
      <router-view></router-view>
    </keep-alive>
  </div>
</template>

<script>
import { mapState } from 'vuex'

export default {
  name: 'app',
  data(){
    return {
      show: true
    }
  },
  computed:{
    ...mapState({
      needInclude:'needInclude'
    })
  }
}

</script>

<style>
@import "assets/css/base.css";
.nav{
  display: flex;
}
.nav a{
  flex: 1;
  text-align: center;
}
.nav a.router-link-active{
  color: red;
}
</style>


store.js

import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

export default new Vuex.Store({
  state: {
    needInclude:[]
  },
  mutations: {
    saveNeedInclude(state,param){
      state.needInclude = param
    }
  },
  actions: {

  }
})

router.js

import Vue from 'vue'
import Router from 'vue-router'
import store from './store'

import Home from './views/index'
import About from './views/about'
import Manage from './views/manage/index'

Vue.use(Router)

let router = new Router({
  routes: [
    {
      redirect: 'home',
      path: '/'
    },
    {
      name: 'home',
      path: '/home',
      component: Home
    },
    {
      name: 'about',
      path: '/about',
      component: About,
      beforeEnter:(to,from,next)=>{
        if(from.name == 'home'){
          store.commit('saveNeedInclude',['about'])
        }else{
          store.commit('saveNeedInclude',[])
        }
        next()
      }
    },
    {
      name: 'manage',
      path: '/manage',
      component: Manage
    }
  ]
})


export default router

相关文章

  • VUE 动态组件&异步组件

    在动态组件中使用 keep-alive 在动态组件中使用keep-alive可一缓存组件 在组件切换的时候不会重新...

  • vue缓存机制之动态keep-alive

    使用keep-alive包裹动态组件时,会缓存不活动的组件。但是有些情况下希望使用keep-alive包裹的动态组...

  • keep-alive实现原理

    一、前言 本文介绍的内容包括: keep-alive用法:动态组件&vue-router keep-alive源码...

  • 随笔

    缓存 : 包裹动态组件时,会缓存不活动的组件实例,而不是销...

  • vue-api-内置组件

    component 动态组件 keep-alive 缓存组件 slot 插槽

  • vue 2.0中keep-alive 组件缓存

    keep-alive用法 包裹动态组件时,会缓存不活动的组件实例,而不是销毁它们。和 ...

  • keep-alive的使用过程以及修改bug遇到的那些坑

    keep-alive的使用介绍 包裹动态组件时,会缓存不活动的组件实例,而不是销毁它们。...

  • 重学Vue--keep-alive的使用

    keep-alive是什么? keep-alive 是 Vue 的内置组件,当它包裹动态组件时,会缓存不活动的组件...

  • 动态keep-alive

    自己做了一个,从home到about时,about要做缓存,从manage进入about时about又不做缓存; ...

  • vue踩坑日记

    keep-alive缓存的组件调用this.$destory()后,无法再次缓存! 解决办法: 动态修改keep-...

网友评论

      本文标题:动态keep-alive

      本文链接:https://www.haomeiwen.com/subject/llrtcctx.html