• vue(25)路由结合keep-alive使用缓存路由


    当我们从一个路由组件跳转到另一个路由组件的时候,默认是会先销毁前一个路由组件在新建后一个路由组件,每次都会触发组件的销毁和创建周期函数。

    每次创建和销毁组件比较消耗资源,我们可以结合keep-alive来让路由组件进行缓存,这样切换的时候路由组件不会被销毁,只会触发组件的deactivated(隐藏)和 activated(激活)两个生命周期函数。

    使用的方式是在App.vue文件中,将router-view写成keep-alive的方式:

      <router-view v-slot="{Component}">
        <transition>
          <keep-alive>
            <component :is="Component"/>
          </keep-alive>
        </transition>
      </router-view>
    上面的写法是对所有的路由组件都生效,即都使用缓存的方式。
    如果我们希望只对部分组件生效,可以为keep-alive标签附上exclude="排除组件的名称1,排除组件的名称2"属性或者include="使用缓存的组件名称1,...":
      <router-view v-slot="{Component}">
        <transition>
          <keep-alive exclude="About">
            <component :is="Component"/>
          </keep-alive>
        </transition>
      </router-view>
     
    结合keep-alive的路由组件我们还可以实现如下功能:
    比如我们有Home组件路由有About组件路由,About组件路由下有两个Article子组件路由(传入参数不同,显示各自的文章内容)。
    现在我们首先点击About路由,然后点击进入id为2的Article子路由,现在页面显示的是Article为2的文章内容。
    然后我们点击回到Home路由,然后再点击进入About路由,这时候我们希望页面还是显示的之前离开时的Article为2的文章内容,即Article为2的子路由。
    实现上述功能的思路是,首先使用keep-alive对路由进行缓存,再组件About的data中定义一个path变量再路由离开时(使用beforeRouterLeave路由钩子函数在路由离开时触发)保存当前的路由,由于使用了keep-alive所以这个变量在About组件再次被激活时不会被初始化,也就是能拿到上次离开这个路由时的path。然后在activated生命周期函数中使用this.$router.push(path);在组件激活时就自动跳到上次离开时的路由即可。
     
  • 相关阅读:
    相遇相知都是缘
    [BTS]6912,5641,5773,5410错误处理!
    [BTS]Cumulative Functloids用法
    职业生涯又一个转折点
    BizTalk Group Day 北京!
    [BTS]10008错误如何处理?
    [ERROR]创建BAM视图时报错
    [BTS]使用BizTalk开发应用系统,就是这么简单!
    [BTS]BizTalk2006 SqlAdapter UpdateGram的Update用法
    [BTS]为什么BTSharePointAdapterWS.asmx无法预览?
  • 原文地址:https://www.cnblogs.com/maycpou/p/14787336.html
Copyright © 2020-2023  润新知