Maison interface Web Voir.js Que sont les propriétés calculées par vue ?

Que sont les propriétés calculées par vue ?

Oct 10, 2020 pm 12:05 PM

Propriétés calculées Vue : Avant la version [Vue.js 0.12.8], tant que la propriété calculée correspondante est lue, le getter correspondant sera réexécuté. Dans la version [Vue.js 0.12.8], cet aspect a été optimisé, c'est-à-dire que le getter ne sera réexécuté que lorsque la valeur de l'attribut dont dépend l'attribut calculé a changé.

Que sont les propriétés calculées par vue ?

propriétés calculées :

Propriétés calculées

Une propriété calculée signifie que lorsque la valeur de sa propriété dépendante change, la valeur de cette propriété sera automatiquement mise à jour et la partie DOM associée sera également automatiquement mise à jour simultanément.

Le code est le suivant :

<div id="example">
        <input type="text" v-model="didi">
        <input type="text" v-model="family">
        <br>
        didi={{didi}},family={{family}},didiFamily={{didiFamily}}
    </div>
    var vm = new Vue({
        el:&#39;#example&#39;,
        data:{
            didi:&#39;didi&#39;,
            family:&#39;family&#39;
        },
        computed:{
            <!-- 一个计算属性的getter -->
            didiFamily:function(){
                <!-- this指向vm实例 -->
                return this.didi+this.family
            }
        }
    })
Copier après la connexion

Lorsque les valeurs de vm.didi et vm.family changent, la valeur de vm.didiFamily sera automatiquement mise à jour, et la partie DOM sera être automatiquement mis à jour de manière synchrone.

L'exemple précédent ne fournit en fait que des getters, en plus des getters. Nous pouvons également définir des setters pour les propriétés calculées. L'exemple de code est le suivant :

<div id="example">
        <input type="text" v-model="didi">
        <input type="text" v-model="family">
        <br>
        didi={{didi}},family={{family}},didiFamily={{didiFamily}}
    </div>
    var vm = new Vue({
        el:&#39;#example&#39;,
        data:{
            didi:&#39;didi&#39;,
            family:&#39;family&#39;
        },
        computed:{
            <!-- 一个计算属性的getter -->
            didiFamily:function(){
                get:function(){
                    <!-- this指向vm实例 -->
                    return this.didi+this.family
                },
                <!-- 一个计算属性的setter -->
                set:function(newVal){
                    var names = newVal.split(&#39;&#39;)
                    this.didi = names[0]
                    this.didi = names[1]
                }
            }
        }
    })
Copier après la connexion

Lorsque la valeur de vm.didiFamily est définie, les valeurs de vm.didi et vm.family seront également automatiquement mises à jour.

2. Mise en cache des attributs calculés

Les caractéristiques des attributs calculés sont en effet attrayantes, mais si un grand nombre d'opérations fastidieuses sont effectuées dans la méthode des attributs calculés, cela peut causer Voici quelques problèmes de performances. Par exemple, effectuer une boucle sur un grand tableau pour effectuer de nombreuses opérations dans un getter de propriété calculée entraînera de nombreuses opérations inutiles lorsque la propriété calculée est fréquemment appelée.

Avant Vue.js version 0.12.8, tant que la propriété calculée correspondante est lue, le getter correspondant sera réexécuté. Dans Vue.js version 0.12.8, cet aspect a été optimisé, c'est-à-dire que le getter ne sera réexécuté que lorsque la valeur de la propriété dont dépend la propriété calculée a changé.

Il y a aussi un problème, c'est-à-dire que le getter ne sera réexécuté que lorsque l'attribut de données observé dans l'instance Vue change. Mais parfois, les propriétés calculées reposent sur des propriétés de données non observables en temps réel. L'exemple de code est le suivant :

var vm = new Vue({
   data:{
       welcome:&#39;welcome to join didiFamily&#39;         
    },
   computed:{
        example:function(){
            return Date.now() + this.welcome    
         }       
     }  
})
Copier après la connexion


Nous devons obtenir l'heure la plus récente à chaque fois que nous accédons à l'exemple au lieu de l'heure mise en cache. À partir de la version 0.12.11 de Vue.js, un commutateur de cache est fourni par défaut. Spécifiez le champ de cache dans l'objet d'attribut calculé pour contrôler s'il faut activer la mise en cache. L'exemple de code est le suivant :

var vm = new Vue({
   data:{
       welcome:&#39;welcome to join didiFamily&#39;         
    },
   computed:{
        example:function(){
            //关闭缓存,默认为true
            cache:false,
            get:function(){
             return Date.now() + this.welcome               
             }      
         }       
     }  
})
Copier après la connexion


Après avoir défini le cache sur false et désactivé le cache, la méthode getter sera réexécutée à chaque accès direct à vm.example .

3. Questions fréquemment posées

Lors de l'utilisation de propriétés calculées dans le développement réel, nous rencontrerons divers problèmes. Voici quelques problèmes courants collectés et leurs solutions.

Scénarios dans lesquels le getter d'attribut calculé n'est pas exécuté

Du point précédent, nous avons appris que lorsque l'attribut de données dont dépend l'attribut calculé change, la méthode getter de l'attribut calculé sera exécutée . Mais dans certains cas, même si l'attribut de données dépendant a changé, la méthode getter de l'attribut calculé ne sera pas exécutée. Mais dans certains cas, même si l'attribut de données dépendant a changé, la méthode getter de l'attribut calculé ne sera pas exécutée.

Lorsque le nœud contenant l'attribut calculé est supprimé et que l'attribut n'est plus référencé ailleurs dans le modèle, la méthode getter correspondante de l'attribut calculé ne sera pas exécutée. L'exemple de code est le suivant :

<div id="example">
        <button @click=&#39;toggleShow&#39;>Toggle Show Total Price</button>
        <p v-if="showTotal">Total Price = {{totalPrice}}</p>
    </div>
    new Vue({
        el:&#39;#example&#39;,
        data:{
            showTotal:true,
            basePrice:100
        },
        computed:{
            totalPrice:function(){
                return this.basePrice + 1
            }
        },
        methods:{
            toggleShow:function(){
                this.showTotal = !this.showTotal
            }
        }
    })
Copier après la connexion

Lorsque vous cliquez sur le bouton pour définir showTotal sur false, l'élément P sera supprimé et la méthode getter de l'attribut calculé totalPrice à l'intérieur de l'élément P ne sera pas exécutée. Mais lorsque l'attribut calculé apparaît toujours dans le modèle, la méthode getter sera toujours exécutée

 2. Utilisation des attributs calculés dans v-repeat

Parfois, après avoir obtenu la collecte de données JSON du backend, Nous devons appliquer des propriétés calculées à une seule donnée. Dans les versions antérieures à Vue.js 0.12, nous pouvons utiliser la directive v-component sur l'élément où se trouve v-repeat. L'exemple de code est le suivant :

<div id="items">
        <p v-repeat="items" vue-component="item">
            <button>{{fulltext}}</button>
        </p>
    </div>
    var items = [
        {number:1,text:&#39;one&#39;},
        {number:2,text:&#39;two&#39;}
    ]
    var vue = new Vue({
        el:&#39;#items&#39;,
        data:{
            items:items
        },
        components:{
            item:{
               computed:{
                    fulltext:function(){
                        return &#39;item&#39; +this.text
                    }
                }, 
            }
        }
    })
Copier après la connexion

Dans Vue.js version 0.12, Vue.js a abandonné la directive v-component, nous devons donc utiliser des composants d'éléments personnalisés pour implémenter les propriétés calculées dans v-repeat. L'exemple de code est le suivant :

<div id="items">
        <my-item v-repeat="items" inline-template>
            
        </my-item>
    </div>
    var items = [
        {number:1,text:&#39;one&#39;},
        {number:2,text:&#39;two&#39;}
    ]
    var vue = new Vue({
        el:&#39;#items&#39;,
        data:{
            items:items
        },
        components:{
            &#39;my-item&#39;:{
               replace:true, 
               computed:{
                    fulltext:function(){
                        return &#39;item&#39; +this.text
                    }
                }, 
            }
        }
    })
Copier après la connexion

Recommandations d'apprentissage gratuites associées : Tutoriel vidéo js

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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

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)

Quelle est la méthode de conversion des chaînes Vue.js en objets? Quelle est la méthode de conversion des chaînes Vue.js en objets? Apr 07, 2025 pm 09:18 PM

L'utilisation de la chaîne JSON.Parse () à l'objet est la plus sûre et la plus efficace: assurez-vous que les chaînes sont conformes aux spécifications JSON et évitez les erreurs courantes. Utilisez Try ... Catch pour gérer les exceptions pour améliorer la robustesse du code. Évitez d'utiliser la méthode EVAL (), qui présente des risques de sécurité. Pour les énormes cordes JSON, l'analyse de fouet ou l'analyse asynchrone peut être envisagée pour optimiser les performances.

Vue est-elle utilisée pour le frontend ou le backend? Vue est-elle utilisée pour le frontend ou le backend? Apr 03, 2025 am 12:07 AM

Vue.js est principalement utilisé pour le développement frontal. 1) Il s'agit d'un cadre JavaScript léger et flexible axé sur la construction d'interfaces utilisateur et d'applications à une seule page. 2) Le cœur de Vue.js est son système de données réactif, et la vue est automatiquement mise à jour lorsque les données changent. 3) Il prend en charge le développement des composants et l'interface utilisateur peut être divisée en composants indépendants et réutilisables.

Vue.js est-il difficile à apprendre? Vue.js est-il difficile à apprendre? Apr 04, 2025 am 12:02 AM

Vue.js n'est pas difficile à apprendre, en particulier pour les développeurs avec une fondation JavaScript. 1) Sa conception progressive et son système réactif simplifient le processus de développement. 2) Le développement basé sur les composants rend la gestion du code plus efficace. 3) Les exemples d'utilisation montrent une utilisation de base et avancée. 4) Les erreurs courantes peuvent être déboguées via Vuedevtools. 5) L'optimisation des performances et les meilleures pratiques, telles que l'utilisation des attributs V-IF / V et clés, peuvent améliorer l'efficacité de l'application.

Comment créer et utiliser des plugins personnalisés dans vue.js? Comment créer et utiliser des plugins personnalisés dans vue.js? Mar 14, 2025 pm 07:07 PM

L'article discute de la création et de l'utilisation des plugins Vue.js personnalisés, y compris les meilleures pratiques de développement, d'intégration et de maintenance.

Quelles sont les principales caractéristiques de Vue.js (architecture basée sur les composants, DOM virtuel, liaison réactive des données)? Quelles sont les principales caractéristiques de Vue.js (architecture basée sur les composants, DOM virtuel, liaison réactive des données)? Mar 14, 2025 pm 07:05 PM

Vue.js améliore le développement Web avec son architecture basée sur des composants, son DOM virtuel pour les performances et la liaison des données réactives pour les mises à jour de l'interface utilisateur en temps réel.

Comment utiliser les tremblements d'arbres dans Vue.js pour supprimer le code inutilisé? Comment utiliser les tremblements d'arbres dans Vue.js pour supprimer le code inutilisé? Mar 18, 2025 pm 12:45 PM

L'article discute de l'utilisation des tremblements d'arbre dans Vue.js pour supprimer le code inutilisé, des détails de configuration avec des modules ES6, une configuration de webpack et des meilleures pratiques pour une implémentation efficace. Count de chargement: 159

Comment configurer VUE CLI pour utiliser différentes cibles de construction (développement, production)? Comment configurer VUE CLI pour utiliser différentes cibles de construction (développement, production)? Mar 18, 2025 pm 12:34 PM

L'article explique comment configurer VUE CLI pour différentes cibles de build, commutation des environnements, optimiser les versions de production et assurer des cartes source dans le développement du débogage.

Comment utiliser Vue avec Docker pour le déploiement conteneurisé? Comment utiliser Vue avec Docker pour le déploiement conteneurisé? Mar 14, 2025 pm 07:00 PM

L'article discute de l'utilisation de Vue avec Docker pour le déploiement, en se concentrant sur la configuration, l'optimisation, la gestion et la surveillance des performances des applications VUE dans les conteneurs.

See all articles