Maison  >  Article  >  interface Web  >  Explication détaillée du principe de fonctionnement et de l'utilisation de keep-alive en vue

Explication détaillée du principe de fonctionnement et de l'utilisation de keep-alive en vue

王林
王林original
2023-07-21 11:58:532281parcourir

Vue.js est un framework frontal populaire qui fournit des fonctions pratiques pour optimiser les performances et améliorer l'efficacité du développement. L'une de ces fonctionnalités est keep-alive, qui nous aide à conserver l'état entre les composants, réduisant ainsi les rendus et les requêtes inutiles. Cet article présentera en détail le fonctionnement de keep-alive et comment l'utiliser, et fournira quelques exemples de code. keep-alive,它可以帮助我们在组件之间保留状态,从而减少不必要的渲染和请求。本文将详细介绍 keep-alive 的工作原理以及使用方法,并提供一些代码示例。

一、keep-alive 的工作原理

在 Vue.js 中,每当我们切换组件时,组件都会被重新创建和渲染。这意味着每次切换组件时,组件的状态都会重置,需要重新加载数据。对于一些状态较为稳定的组件,这种行为会导致不必要的性能浪费。

keep-alive 组件的作用就是将需要保留状态的组件缓存起来,而不是销毁和重新创建。这样,在切换组件时,如果组件已经被缓存,它将直接从缓存中读取状态,而不是重新加载数据和渲染。

keep-alive 的工作原理如下:

  1. 首次加载组件时,会将组件实例缓存起来,同时将组件的 vm.$el(组件实例的根 DOM 元素)从 DOM 树中移除。
  2. 当切换到其他组件后,原始组件的 vm.$el 会放入一个名为 _inactive 的数组中保存起来。
  3. 如果再次切换回原始组件,原始组件的 vm.$el 会从 _inactive 数组中取出,并重新插入到 DOM 树中。

需要注意的是,由于组件被缓存起来,所以组件的生命周期钩子函数(如 createdmounted 等)只在首次加载时触发一次,后续切换时不会再触发。

二、keep-alive 的使用方法

在 Vue.js 中,我们可以使用 7c9485ff8c3cba5ae9343ed63c2dc3f7 组件来包裹需要缓存的组件。下面是一些常见的使用方法:

  1. 缓存单个组件:
<template>
  <div>
    <keep-alive>
      <Component></Component>
    </keep-alive>
  </div>
</template>

在这个示例中,9366e37985177da7839522e36133b6c8 组件将被缓存起来。当切换到其他组件后再切换回来时,9366e37985177da7839522e36133b6c8 组件将从缓存中读取状态,而不是重新创建。

  1. 缓存多个组件:
<template>
  <div>
    <keep-alive>
      <router-view></router-view>
    </keep-alive>
  </div>
</template>

在这个示例中,所有通过路由配置加载的组件都将被缓存起来。当切换路由时,已经加载过的组件将从缓存中读取状态。

  1. 动态缓存组件:
<template>
  <div>
    <keep-alive :include="includeComponents">
      <router-view></router-view>
    </keep-alive>
  </div>
</template>

<script>
export default {
  data() {
    return {
      includeComponents: ['ComponentA', 'ComponentB']
    }
  }
}
</script>

在这个示例中,只有包含在 includeComponents 数组中的组件才会被缓存。其他组件在切换时将会被销毁并重新创建。

  1. 缓存前后状态不同的组件:
<template>
  <div>
    <keep-alive :exclude="excludeComponents">
      <router-view></router-view>
    </keep-alive>
  </div>
</template>

<script>
export default {
  data() {
    return {
      excludeComponents: ['ComponentA']
    }
  }
}
</script>

在这个示例中,将不会缓存在 excludeComponents 数组中的组件。这意味着切换到其他组件后,再切换回来时,被排除的组件将会重新创建。

三、总结

keep-alive 组件是 Vue.js 提供的一个能够帮助我们优化性能的功能。它的工作原理是将需要保留状态的组件缓存起来,并在切换时直接从缓存中加载状态,避免了不必要的重新渲染和请求。使用方法简单,可以缓存单个组件、多个组件,甚至可以动态控制缓存的组件。

通过合理使用 keep-alive 组件,我们可以提升应用的性能,减少不必要的资源消耗。希望本文对你理解 keep-alive

1. Comment fonctionne keep-alive

Dans Vue.js, chaque fois que nous changeons de composant, les composants seront recréés et rendus. Cela signifie que chaque fois que vous changez de composant, l'état du composant est réinitialisé et les données doivent être rechargées. Pour certains composants relativement stables, ce comportement peut entraîner un gaspillage inutile de performances. 🎜🎜Le rôle du composant keep-alive est de mettre en cache les composants qui doivent conserver leur état au lieu de les détruire et de les recréer. De cette façon, lors du changement de composant, si le composant est déjà mis en cache, il lira l'état directement depuis le cache au lieu de recharger les données et le rendu. 🎜🎜keep-alive fonctionne comme suit : 🎜
  1. Lorsqu'un composant est chargé pour la première fois, l'instance du composant sera mise en cache et le vm.$el du composant (l'élément DOM racine de l'instance du composant) est supprimé de l'arborescence DOM.
  2. Lors du passage à un autre composant, le vm.$el du composant d'origine sera placé dans un tableau nommé _inactive et enregistré.
  3. Si vous revenez au composant d'origine, le vm.$el du composant d'origine sera retiré du tableau _inactive et réinséré dans le Arbre DOM.
🎜Il convient de noter que puisque le composant est mis en cache, la fonction de hook du cycle de vie du composant (telle que créé, monté, etc.) est uniquement dedans. Il est déclenché une fois lors du premier chargement et ne sera plus déclenché lors des commutations suivantes. 🎜

2. Comment utiliser keep-alive

🎜Dans Vue.js, nous pouvons utiliser le composant 7c9485ff8c3cba5ae9343ed63c2dc3f7 pour envelopper le Composants mis en cache requis. Voici quelques utilisations courantes : 🎜
  1. Cache un seul composant :
rrreee🎜Dans cet exemple, le composant 9366e37985177da7839522e36133b6c8 sera mis en cache. Lors du passage à un autre composant et inversement, le composant 9366e37985177da7839522e36133b6c8 lira l'état du cache au lieu de le recréer. 🎜
  1. Cache plusieurs composants :
rrreee🎜Dans cet exemple, tous les composants chargés via la configuration de routage seront mis en cache. Lors du changement de route, les composants déjà chargés liront leur état dans le cache. 🎜
  1. Composants de cache dynamique :
rrreee🎜Dans cet exemple, seuls les composants contenus dans le tableau includeComponents seront mis en cache. Les autres composants seront détruits et recréés lors du changement. 🎜
  1. Composants avec des états différents avant et après la mise en cache :
rrreee🎜Dans cet exemple, les composants du tableau excludeComponents ne seront pas être des composants mis en cache. Cela signifie qu'après le passage à d'autres composants, puis le retour en arrière, les composants exclus seront recréés. 🎜

3. Résumé

🎜Le composant keep-alive est une fonction fournie par Vue.js qui peut nous aider à optimiser les performances. Il fonctionne en mettant en cache les composants qui doivent conserver leur état et en chargeant l'état directement à partir du cache lors du changement, évitant ainsi un nouveau rendu et des requêtes inutiles. La méthode d'utilisation est simple, vous pouvez mettre en cache un seul composant, plusieurs composants et même contrôler dynamiquement les composants mis en cache. 🎜🎜En utilisant rationnellement le composant keep-alive, nous pouvons améliorer les performances des applications et réduire la consommation inutile de ressources. J'espère que cet article vous aidera à comprendre comment fonctionne keep-alive et comment l'utiliser. Si vous avez des questions, n'hésitez pas à laisser un message pour en discuter. 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn