vue中缓存路由组件

举报
一向很安静 发表于 2022/02/28 15:55:37 2022/02/28
【摘要】 上一篇简单的和大家介绍了关于,在本篇我会给大家介绍一下关于vue中缓存路由组件,在我们之前讲解的路由的使用中如果我们需要获取一个表单的数据,都是客户或者我们在使用表单填数据的时候可以 不会马上填好,中途会切换出去其他地方,但是呢切出去在回来我们的数据就会丢失,这样的用户体验就很差,使用我们要将这些临时的数据存起来。![image.png](https://p1-juejin.byteimg....


上一篇简单的和大家介绍了关于,在本篇我会给大家介绍一下关于vue中缓存路由组件,在我们之前讲解的路由的使用中如果我们需要获取一个表单的数据,都是客户或者我们在使用表单填数据的时候可以 不会马上填好,中途会切换出去其他地方,但是呢切出去在回来我们的数据就会丢失,这样的用户体验就很差,使用我们要将这些临时的数据存起来。

![image.png](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/0e02e779c444419d80bf76c62fa6829b~tplv-k3u1fbpfcp-watermark.image?)

这个时候就可以使用到我们的缓存路由组件也就是`keep-alive`标签这个标签的意思就是保持活跃,帮助我们的组件不被销毁,这种标签还有一个属性`include="  "`是指定被包裹下面的哪一个不被销毁。`include="组件名"`


```js
<template>
    <div>
        <h2>Home组件内容</h2>
        <div>
            <ul class="nav nav-tabs">
                <li>
                    <router-link class="list-group-item" active-class="active" to="/home/news">News</router-link>
                </li>
                <li>
                    <router-link class="list-group-item" active-class="active" to="/home/message">Message</router-link>
                </li>
            </ul>
            <!-- 缓存多个路由组件 -->
            <!-- <keep-alive :include="['News','Message']"> -->
                
            <!-- 缓存一个路由组件 -->
            <keep-alive include="News">
                <router-view></router-view>
            </keep-alive>
        </div>
    </div>
</template>

<script>
    export default {
        name:'Home',
        /* beforeDestroy() {
            console.log('Home组件即将被销毁了')
        }, */
        /* mounted() {
            console.log('Home组件挂载完毕了',this)
            window.homeRoute = this.$route
            window.homeRouter = this.$router
        },  */
    }
</script>
```

### 1.缓存路由组件

1. 作用:让不展示的路由组件保持挂载,不被销毁。

2. 具体编码:

   ```vue
   <keep-alive include="News"> 
       <router-view></router-view>
   </keep-alive>
   ```
   注意:要看我们展示的组织在谁的里面,就在哪里写。因为缓存路由组件只能在组件外使用,如果我们写在组件内部将会失效。
   小技巧当我们需要缓存的组件过多但是又不是全部的时候,可以通过将include变成`:include`这样我们就可以在值里面写数组了`:include=“['xx','bbb','ccc']”`
   
接下来我和大家讲两个新的生命周期钩子,如果我们使用了上面缓存路由组件会出现一个尴尬的事情这个就是beforeDestroy的方法被取消了也可以说是失效了,但是我们又需要在这个组件中使用这个功能怎么办呢?这个时候我们就需要知道路由组件所独有的两个钩子了他们就是```activated```和```deactivated```

### 2.两个新的生命周期钩子

1. 作用:路由组件所独有的两个钩子,用于捕获路由组件的激活状态。
2. 具体名字:
   1. ```activated```路由组件被激活时触发。
   2. ```deactivated```路由组件失活时触发。

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。