keep-alive

  • 动态组件 is

<template>

  <div>

     // 按钮,用于切换组件。注意,此时的A为字符串而非变量

    <button @click="showWhat = 'A'">showA</button>

    <button @click="showWhat = 'B'">showB</button>

    // 动态切换显隐,组件

    <component :is="showWhat"></component>

  </div>

</template>

 

<script>

//引入组件A以及组件B

import A from "./a";

import B from "./b";

export default {

  components: {

    //声明组件A,B

    A,

    B

  },

  data() {

    return {

      //默认显示组件A,若字符串为B则显示组件B,name为component声明

      showWhat: "A"

    };

  }

};

</script>

 

<style>

</style>

 

  • 用keep-alive 缓存动态组件

当在这些组件之间切换的时候,你有时会想保持这些组件的状态,以避免反复重渲染导致的性能问题

<keep-alive>

  <component v-bind:is="currentTabComponent"></component>

</keep-alive>

 

  • keep-alive的生命周期

当组件在 <keep-alive> 内被切换,它的 activated 和 deactivated 这两个生命周期钩子函数将会被对应执行。

 

初次进入时:created > mounted > activated;退出后触发 deactivated

再次进入:会触发 activated;事件挂载的方法等,只执行一次的放在 mounted 中;组件每次进去执行的方法放在 activated 中

 

  • 应用

如果未使用keep-alive组件,则在页面回退时仍然会重新渲染页面,触发created钩子,使用体验不好。 在以下场景中使用keep-alive组件会显著提高用户体验,菜单存在多级关系,多见于列表页+详情页的场景如:

商品列表页点击商品跳转到商品详情,返回后仍显示原有信息

订单列表跳转到订单详情,返回,等等场景。

 

  • Props
    • include - 字符串或正则表达式。只有名称匹配的组件会被缓存。
    • exclude - 字符串或正则表达式。任何名称匹配的组件都不会被缓存。
    • max - 数字。最多可以缓存多少组件实例。

 

<keep-alive :include="['a', 'b']" :max="10">

  <component :is="view"></component>

</keep-alive>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值