文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Vue的keep-alive怎么使用

2024-04-02 19:55

关注

这篇文章主要讲解了“Vue的keep-alive怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Vue的keep-alive怎么使用”吧!

用法

keep-alive 是 Vue 的内置组件,当它包裹动态组件时,会缓存不活动的组件实例,而不是销毁它们。和 transition 相似,keep-alive 是一个抽象组件:它自身不会渲染成一个 DOM 元素,也不会出现在父组件链中。当组件在 <keep-alive> 内被切换,它的 activated 和 deactivated 这两个生命周期钩子函数将会被对应执行。

在 2.2.0 及其更高版本中,activated 和 deactivated 将会在 <keep-alive> 树内的所有嵌套组件中触发。

作用

在组件切换过程中将状态保留在缓存中,防止重复渲染DOM,减少加载时间及性能消耗,优化用户体验。(主要用于保留组件状态或避免重新渲染)

Props

include - 字符串或正则表达式。只有名称匹配的组件会被缓存。

exclude - 字符串或正则表达式。任何名称匹配的组件都不会被缓存。

max - 数字。最多可以缓存多少组件实例。

生命周期钩子

activated

在 keep-alive 组件激活时调用(该钩子函数在服务器端渲染期间不被调用)。

deactivated

在 keep-alive 组件失活时调用(该钩子在服务器端渲染期间不被调用)。

被包含在 keep-alive 中的组件,会多出两个生命周期的钩子:activated 与 deactivated,使用 keep-alive 会将数据保留在缓存中,如果要在每次进入页面的时候获取最新的数据,需要在activated 阶段获取数据(因为被包裹的组件只有在首次渲染才会去执行created、mounted等钩子),承担原来在created、mounted等钩子获取数据的任务。

注意: 只有组件被 keep-alive 包裹时,这两个生命周期函数才会被调用,如果作为正常组件使用,是不会被调用的,以及在 2.1.0 版本之后,使用 exclude 排除之后,就算被包裹在 keep-alive 中,这两个钩子函数依然不会被调用!另外,在服务端渲染时,此钩子函数也不会被调用。

示例

缓存(所有)路由组件

App.vue(未使用keep-alive)

<template>

  <div id="app">

    <div id="nav">

      <div class="main-content">

        <router-link to="/home" active-class="isActive">Home</router-link>

        <span>|</span>

        <router-link to="/about" active-class="isActive">About</router-link>

        <div class="router-view-content">

          <!-- 使用 <router-view> 渲染路径匹配到的视图组件 -->

          <router-view />

        </div>

      </div>

    </div>

  </div>

</template>

<script>

export default {

  name: "App"

};

</script>

路由组件1:Home.vue

<template>

  <div class="home">

    <p>This is a Home page</p>

    <el-input v-model="inputText" placeholder="请输入" style="width:50%"></el-input>

  </div>

</template>

<script>

export default {

  name: "Home",

  data() {

    return {

      inputText: "",

    };

  },

};

</script>

路由组件2:About.vue

<template>

  <div class="about">

    <p>This is an About page</p>

    <el-select v-model="value" placeholder="请选择" style="width: 50%">

      <el-option

        v-for="item in options"

        :key="item.value"

        :label="item.label"

        :value="item.value"

      >

      </el-option>

    </el-select>

  </div>

</template>

<script>

export default {

  name: "About",

  data() {

    return {

      value: "",

      options: [

        {

          value: "zhangsan",

          label: "张三",

        },

        {

          value: "lisi",

          label: "李四",

        },

      ],

    };

  },

};

</script>

在未使用keep-alive情况下,在Home页面输入框输入内容

感谢各位的阅读,以上就是“Vue的keep-alive怎么使用”的内容了,经过本文的学习后,相信大家对Vue的keep-alive怎么使用这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯