Maison interface Web js tutoriel Explication détaillée de l'instance de cache de composant spécifiée par vue

Explication détaillée de l'instance de cache de composant spécifiée par vue

May 26, 2018 pm 05:57 PM
实例 缓存 详解

keep-alive est un composant intégré de Vue qui permet aux composants inclus de conserver leur état ou d'éviter un nouveau rendu. Cet article présente principalement le cache des composants désignés de Vue. Les amis qui en ont besoin peuvent se référer à

introduction de keep-alive

keep-alive est Vue A. composant intégré qui permet au composant contenu de conserver son état ou d'éviter un nouveau rendu.

l'utilisation est également très simple :

<keep-alive>
 <component>
 <!-- 该组件将被缓存! -->
 </component>
</keep-alive>
Copier après la connexion

accessoires

inclure - chaîne ou Expression régulière, seuls les composants correspondants seront mis en cache
exclure - chaîne ou expression régulière, tous les composants correspondants ne seront pas mis en cache

// 组件 a
export default {
 name: 'a',
 data () {
 return {}
 }
}
<keep-alive include="a">
 <component>
 <!-- name 为 a 的组件将被缓存! -->
 </component>
</keep-alive>可以保留它的状态或避免重新渲染
<keep-alive exclude="a">
 <component>
 <!-- 除了 name 为 a 的组件都将被缓存! -->
 </component>
</keep-alive>可以保留它的状态或避免重新渲染

<keep-alive include="test-keep-alive">
 <!-- 将缓存name为test-keep-alive的组件 -->
 <component></component>
</keep-alive>

<keep-alive include="a,b">
 <!-- 将缓存name为a或者b的组件,结合动态组件使用 -->
 <component :is="view"></component>
</keep-alive>

<!-- 使用正则表达式,需使用v-bind -->
<keep-alive :include="/a|b/">
 <component :is="view"></component>
</keep-alive>

<!-- 动态判断 -->
<keep-alive :include="includedComponents">
 <router-view></router-view>
</keep-alive>

<keep-alive exclude="test-keep-alive">
 <!-- 将不缓存name为test-keep-alive的组件 -->
 <component></component>
</keep-alive>
Copier après la connexion

Meet vue-router

router-view est également un composant s'il est directement enveloppé dans keep-alive, tous les composants de vue correspondant au chemin seront mis en cache :

<keep-alive>
 <router-view>
 <!-- 所有路径匹配到的视图组件都会被缓存! -->
 </router-view>
</keep-alive>
Copier après la connexion

Cependant, les besoins du produit changent toujours, et il n'y a aucun moyen de l'arrêter...

Problème

Que se passe-t-il si vous souhaitez que seul un certain composant de la vue du routeur soit mis en cache ?

Utilisez include/exclude
pour ajouter l'attribut router.meta
Utilisez include/exclude

// 组件 a
export default {
 name: 'a',
 data () {
 return {}
 }
}
<keep-alive include="a">
 <router-view>
 <!-- 只有路径匹配到的视图 a 组件会被缓存! -->
 </router-view>
</keep-alive>
Copier après la connexion

exclude L'exemple est similaire.

Inconvénients : Besoin de connaître le nom du composant, ce n'est pas un bon choix lorsque le projet est complexe

Ajouter l'attribut router.meta

// routes 配置
export default [
 {
 path: '/',
 name: 'home',
 component: Home,
 meta: {
 keepAlive: true // 需要被缓存
 }
 }, {
 path: '/:id',
 name: 'edit',
 component: Edit,
 meta: {
 keepAlive: false // 不需要被缓存
 }
 }
]
<keep-alive>
 <router-view v-if="$route.meta.keepAlive">
 <!-- 这里是会被缓存的视图组件,比如 Home! -->
 </router-view>
</keep-alive>

<router-view v-if="!$route.meta.keepAlive">
 <!-- 这里是不被缓存的视图组件,比如 Edit! -->
</router-view>
Copier après la connexion

Avantages : Pas besoin d'énumérer les noms des composants qui doivent être mis en cache

[Ajouter du sel] Utilisez router.meta pour développer

Supposons qu'il y ait 3 routes : A, B, C.

Exigences :

Afficher A par défaut
B passe à A, A ne s'actualise pas
C passe à A, A s'actualise
Méthode de mise en œuvre

Dans Définir l'attribut méta dans la route A :

{
 path: '/',
 name: 'A',
 component: A,
 meta: {
 keepAlive: true // 需要被缓存
 }
}
Copier après la connexion

Définir avantRouteLeave dans le composant B :

export default {
 data() {
 return {};
 },
 methods: {},
 beforeRouteLeave(to, from, next) {
  // 设置下一个路由的 meta
 to.meta.keepAlive = true; // 让 A 缓存,即不刷新
 next();
 }
};
Copier après la connexion

Définissez beforeRouteLeave dans le composant C :

export default {
 data() {
 return {};
 },
 methods: {},
 beforeRouteLeave(to, from, next) {
 // 设置下一个路由的 meta
 to.meta.keepAlive = false; // 让 A 不缓存,即刷新
 next();
 }
};
Copier après la connexion

De cette façon, B peut revenir à A, A ne se rafraîchira pas ; et C renverront Actualiser en atteignant A.

Ce qui précède est ce que j'ai compilé pour vous. J'espère que cela vous sera utile à l'avenir.

Articles connexes :

Exemple de code d'implémentation de téléchargement de la barre de progression Ajax basé sur Blod

Utilisez Promise pour résoudre plusieurs Ajax asynchrones Problème d'imbrication de code causé par la requête

Ajax transmettant le code d'instance JSON

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 de ce site Web
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

Article chaud

Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD
Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Article chaud

Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD
Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Tags d'article chaud

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Explication détaillée de l'obtention des droits d'administrateur dans Win11 Explication détaillée de l'obtention des droits d'administrateur dans Win11 Mar 08, 2024 pm 03:06 PM

Explication détaillée de l'obtention des droits d'administrateur dans Win11

Explication détaillée du fonctionnement de la division dans Oracle SQL Explication détaillée du fonctionnement de la division dans Oracle SQL Mar 10, 2024 am 09:51 AM

Explication détaillée du fonctionnement de la division dans Oracle SQL

Comment afficher et actualiser le cache DNS sous Linux Comment afficher et actualiser le cache DNS sous Linux Mar 07, 2024 am 08:43 AM

Comment afficher et actualiser le cache DNS sous Linux

Explication détaillée du rôle et de l'utilisation de l'opérateur modulo PHP Explication détaillée du rôle et de l'utilisation de l'opérateur modulo PHP Mar 19, 2024 pm 04:33 PM

Explication détaillée du rôle et de l'utilisation de l'opérateur modulo PHP

Meilleures pratiques APCu : améliorer l'efficacité de vos applications Meilleures pratiques APCu : améliorer l'efficacité de vos applications Mar 01, 2024 pm 10:58 PM

Meilleures pratiques APCu : améliorer l'efficacité de vos applications

Mécanisme de mise en cache et pratique d'application dans le développement PHP Mécanisme de mise en cache et pratique d'application dans le développement PHP May 09, 2024 pm 01:30 PM

Mécanisme de mise en cache et pratique d'application dans le développement PHP

Utilisation avancée de PHP APCu : libérer la puissance cachée Utilisation avancée de PHP APCu : libérer la puissance cachée Mar 01, 2024 pm 09:10 PM

Utilisation avancée de PHP APCu : libérer la puissance cachée

La relation entre CPU, mémoire et cache est expliquée en détail ! La relation entre CPU, mémoire et cache est expliquée en détail ! Mar 07, 2024 am 08:30 AM

La relation entre CPU, mémoire et cache est expliquée en détail !

See all articles