vue中如何使用keep-alive

  • Post author:
  • Post category:vue


在vue中,可以使用标签将组件包裹起来,用于缓存不活动的组件实例,从而提高应用的性能

<template>
  <div>
    <component-one v-if="showOne"></component-one>
    <component-two v-else></component-two>
    <button @click="toggle">Toggle</button>
  </div>
</template>

<script>
import ComponentOne from './ComponentOne.vue'
import ComponentTwo from './ComponentTwo.vue'

export default {
  components: {
    ComponentOne,
    ComponentTwo
  },
  data () {
    return {
      showOne: true
    }
  },
  methods: {
    toggle () {
      this.showOne = !this.showOne
    }
  }
}
</script>

在上面这个示例中, 每当切换到 ComponentOne 模块时会创建一个新的实例.

使用 可以实现缓存已挂载的实例,避免多次创建和销毁,

可以通过添加 include 和 exclude 属性设置需要/排除缓存的组件名。

<template>
  <div>
    <keep-alive include="ComponentOne">
      <component-one v-if="showOne"></component-one>
    </keep-alive>
    <keep-alive exclude="ComponentOne">
      <component-two v-else></component-two>
    </keep-alive>
    <button @click="toggle">Toggle</button>
  </div>
</template>

<script>
import ComponentOne from './ComponentOne.vue'
import ComponentTwo from './ComponentTwo.vue'

export default {
  components: {
    ComponentOne,
    ComponentTwo
  },
  data () {
    return {
      showOne: true
    }
  },
  methods: {
    toggle () {
      this.showOne = !this.showOne
    }
  }
}
</script>

在这个示例中,标签分别缓存了 ComponentOne 和 ComponentTwo 组件的实例。



版权声明:本文为weixin_47003395原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。