Heim Web-Frontend View.js Was sind vue-berechnete Eigenschaften?

Was sind vue-berechnete Eigenschaften?

Oct 10, 2020 pm 12:05 PM

vue-berechnete Eigenschaften: Vor der Version [Vue.js 0.12.8] wird der entsprechende Getter erneut ausgeführt, solange die entsprechende berechnete Eigenschaft gelesen wird. In der Version [Vue.js 0.12.8] wurde diesbezüglich eine Optimierung durchgeführt, d. h. der Getter wird nur dann erneut ausgeführt, wenn sich der Attributwert, von dem das berechnete Attribut abhängt, geändert hat. Berechnete Eigenschaften von vue: Berechnete Eigenschaften Wird ebenfalls synchronisiert und automatisch aktualisiert.

Der Code lautet wie folgt:

<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
            }
        }
    })
Nach dem Login kopieren
Was sind vue-berechnete Eigenschaften?Wenn sich die Werte von vm.didi und vm.family ändern, wird der Wert von vm.didiFamily automatisch aktualisiert und der DOM-Teil wird automatisch synchron aktualisiert.

 Das vorherige Beispiel stellt zusätzlich zu Gettern nur Getter bereit. Wir können auch Setter für berechnete Eigenschaften festlegen. Das Codebeispiel lautet wie folgt:

<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]
                }
            }
        }
    })
Nach dem Login kopieren
Wenn der Wert von vm.didiFamily festgelegt ist, werden auch die Werte von vm.didi und vm.family automatisch aktualisiert.

2. Zwischenspeicherung berechneter Attribute

Die Funktionen berechneter Attribute sind zwar attraktiv, aber wenn in der Methode berechneter Attribute eine große Anzahl zeitaufwändiger Vorgänge ausgeführt wird, kann dies zu Leistungsproblemen führen. Wenn beispielsweise eine Schleife über ein großes Array ausgeführt wird, um viele Vorgänge in einem Getter für berechnete Eigenschaften auszuführen, führt dies zu vielen unnötigen Vorgängen, wenn die berechnete Eigenschaft häufig aufgerufen wird.

 Vor Vue.js Version 0.12.8 wird der entsprechende Getter erneut ausgeführt, solange die entsprechende berechnete Eigenschaft gelesen wird. In Vue.js Version 0.12.8 wurde dieser Aspekt optimiert, d. h. der Getter wird nur dann erneut ausgeführt, wenn sich der Eigenschaftswert, von dem die berechnete Eigenschaft abhängt, geändert hat.

Es gibt auch ein Problem: Der Getter wird nur dann erneut ausgeführt, wenn sich das beobachtete Datenattribut in der Vue-Instanz ändert. Aber manchmal basieren berechnete Eigenschaften auf nicht beobachtbaren Dateneigenschaften in Echtzeit. Das Codebeispiel lautet wie folgt:

var vm = new Vue({
   data:{
       welcome:&#39;welcome to join didiFamily&#39;         
    },
   computed:{
        example:function(){
            return Date.now() + this.welcome    
         }       
     }  
})
Nach dem Login kopieren

Wir müssen jedes Mal, wenn wir auf das Beispiel zugreifen, die neueste Zeit abrufen, anstatt die zwischengespeicherte Zeit. Ab Vue.js Version 0.12.11 wird standardmäßig ein Cache-Schalter bereitgestellt. Geben Sie das Cache-Feld im berechneten Attributobjekt an, um zu steuern, ob Caching aktiviert werden soll. Das Codebeispiel lautet wie folgt:

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               
             }      
         }       
     }  
})
Nach dem Login kopieren

Nachdem der Cache auf „false“ gesetzt und der Cache ausgeschaltet wurde, wird die Getter-Methode jedes Mal erneut ausgeführt, wenn direkt auf vm.example zugegriffen wird.

3. Häufig gestellte Fragen

Bei der Verwendung berechneter Eigenschaften in der tatsächlichen Entwicklung werden wir auf verschiedene Probleme und Lösungen stoßen.

Szenario, in dem der Getter für berechnete Attribute nicht ausgeführt wird

  Aus dem vorherigen Punkt haben wir gelernt, dass, wenn sich das Datenattribut ändert, von dem das berechnete Attribut abhängt, die Getter-Methode des berechneten Attributs ausgeführt wird. In einigen Fällen wird die Getter-Methode des berechneten Attributs jedoch nicht ausgeführt, obwohl sich das abhängige Datenattribut geändert hat. In einigen Fällen wird die Getter-Methode des berechneten Attributs jedoch nicht ausgeführt, obwohl sich das abhängige Datenattribut geändert hat.


    Wenn der Knoten, der das berechnete Attribut enthält, entfernt wird und das Attribut an anderer Stelle in der Vorlage nicht mehr referenziert wird, wird die entsprechende Getter-Methode des berechneten Attributs nicht ausgeführt. Das Codebeispiel lautet wie folgt:

<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
            }
        }
    })
Nach dem Login kopieren

Wenn auf die Schaltfläche geklickt wird, um showTotal auf false zu setzen, wird das P-Element entfernt und die Getter-Methode des berechneten Attributs totalPrice innerhalb des P-Elements wird nicht ausgeführt. Aber wenn das berechnete Attribut immer in der Vorlage erscheint, wird die Getter-Methode trotzdem ausgeführt einzelnes Datenelement. In Versionen vor Vue.js 0.12 können wir die v-component-Direktive für das Element verwenden, in dem sich v-repeat befindet. Das Codebeispiel lautet wie folgt:

<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
                    }
                }, 
            }
        }
    })
Nach dem Login kopieren

In Vue.js Version 0.12 hat Vue.js die V-Component-Direktive aufgegeben, daher müssen wir benutzerdefinierte Elementkomponenten verwenden, um berechnete Eigenschaften in V-Repeat zu implementieren. Das Codebeispiel lautet wie folgt:

<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
                    }
                }, 
            }
        }
    })
Nach dem Login kopieren

Verwandte kostenlose Lernempfehlungen:

js-Video-Tutorial

Das obige ist der detaillierte Inhalt vonWas sind vue-berechnete Eigenschaften?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wie ist die Methode, um Vue.js -Zeichenfolgen in Objekte umzuwandeln? Wie ist die Methode, um Vue.js -Zeichenfolgen in Objekte umzuwandeln? Apr 07, 2025 pm 09:18 PM

Die Verwendung von JSON.Parse () String to Object ist am sichersten und effizientesten: Stellen Sie sicher, dass die Zeichenfolgen den JSON -Spezifikationen entsprechen, und vermeiden Sie häufige Fehler. Verwenden Sie Try ... Fang, um Ausnahmen zu bewältigen, um die Code -Robustheit zu verbessern. Vermeiden Sie die Verwendung der Methode EVAL (), die Sicherheitsrisiken aufweist. Für riesige JSON -Saiten kann die Analyse oder eine asynchrone Parsen in Betracht gezogen werden, um die Leistung zu optimieren.

Wird Vue für Frontend oder Backend verwendet? Wird Vue für Frontend oder Backend verwendet? Apr 03, 2025 am 12:07 AM

Vue.js wird hauptsächlich für die Front-End-Entwicklung verwendet. 1) Es handelt sich um ein leichtes und flexibles JavaScript-Framework, das sich auf den Aufbau von Benutzeroberflächen und einseitigen Anwendungen konzentriert. 2) Der Kern von Vue.js ist das reaktionsschnelle Datensystem, und die Ansicht wird automatisch aktualisiert, wenn sich die Daten ändert. 3) Es unterstützt die Komponentenentwicklung und die Benutzeroberfläche kann in unabhängige und wiederverwendbare Komponenten aufgeteilt werden.

Ist Vue.js schwer zu lernen? Ist Vue.js schwer zu lernen? Apr 04, 2025 am 12:02 AM

Vue.js ist nicht schwer zu lernen, insbesondere für Entwickler mit einer JavaScript -Stiftung. 1) Sein progressives Design und das reaktionsschnelle System vereinfachen den Entwicklungsprozess. 2) Komponentenbasierte Entwicklung macht das Codemanagement effizienter. 3) Die Nutzungsbeispiele zeigen eine grundlegende und fortgeschrittene Verwendung. 4) Häufige Fehler können durch VEDEVTOOLS debuggen werden. 5) Leistungsoptimierung und Best Practices, z. B. die Verwendung von V-IF/V-Shows und Schlüsselattributen, können die Anwendungseffizienz verbessern.

Wie erstelle und verwende ich benutzerdefinierte Plugins in Vue.js? Wie erstelle und verwende ich benutzerdefinierte Plugins in Vue.js? Mar 14, 2025 pm 07:07 PM

In Artikel werden kundenspezifische VUE.JS -Plugins erstellt und verwendet, einschließlich der Best Practices für Entwicklung, Integration und Wartung.

Was sind die wichtigsten Merkmale von VUE.JS (Komponentenbasierte Architektur, virtuelles DOM, reaktive Datenbindung)? Was sind die wichtigsten Merkmale von VUE.JS (Komponentenbasierte Architektur, virtuelles DOM, reaktive Datenbindung)? Mar 14, 2025 pm 07:05 PM

VUE.JS verbessert die Webentwicklung mit seiner Komponenten-basierten Architektur, virtuellen DOM für die Leistung und reaktive Datenbindung für Echtzeit-UI-Updates.

Wie benutze ich Baum, das in Vue.js zittert, um nicht verwendeten Code zu entfernen? Wie benutze ich Baum, das in Vue.js zittert, um nicht verwendeten Code zu entfernen? Mar 18, 2025 pm 12:45 PM

In dem Artikel werden mit dem Baumschütteln in Vue.js mit dem Entfernen des nicht verwendeten Codes eingerichtet, wobei das Setup mit ES6 -Modulen, Webpackkonfiguration und Best Practices für die effektive Implementierung detailliert wird. Charakterzahl: 159

Wie konfiguriere ich Vue CLI so, dass sie verschiedene Build -Ziele (Entwicklung, Produktion) verwenden? Wie konfiguriere ich Vue CLI so, dass sie verschiedene Build -Ziele (Entwicklung, Produktion) verwenden? Mar 18, 2025 pm 12:34 PM

In dem Artikel wird erläutert, wie VUE CLI für verschiedene Build -Ziele konfiguriert, Umgebungen der Produktion optimieren und die Entwicklung von Quellkarten für das Debuggen sicherstellen kann.

Wie verwende ich Vue mit Docker für die Bereitstellung von Container? Wie verwende ich Vue mit Docker für die Bereitstellung von Container? Mar 14, 2025 pm 07:00 PM

In dem Artikel wird die Verwendung von Vue mit Docker zur Bereitstellung erörtert, wobei der Schwerpunkt auf Setup, Optimierung, Management und Leistungsüberwachung von VUE -Anwendungen in Containern liegt.

See all articles