Dieses Mal werde ich Ihnen eine detaillierte Erklärung der von Vue berechneten Eigenschaften und ihrer Verwendung geben. Was sind die Vorsichtsmaßnahmen , wenn Sie von Vue berechnete Eigenschaften verwenden?
1. Was ist ein berechnetes Attribut?
<p id="example"> {{ message.split('').reverse().join('') }} </p>
2. Verwendung berechneter Attribute
Verschiedene komplexe Logiken können in einem berechneten Attribut vervollständigt werden, einschließlich Operationen, Funktionsaufrufen usw. As solange am Ende ein Ergebnis zurückgegeben wird. Lassen Sie uns das obige Beispiel mit berechneten Eigenschaften umschreiben<p id="example"> <p>Original message: "{{ message }}"</p> <p>Computed reversed message: "{{ reversedMessage }}"</p> //我们把复杂处理放在了计算属性里面了 </p> var vm = new Vue({ el: '#example', data: { message: 'Hello' }, computed: { reversedMessage: function () { // `this` 指向 vm 实例 return this.message.split('').reverse().join('') } } });
Ursprüngliche Nachricht: „Hallo“Berechnete umgekehrte Nachricht : "olleH"Zusätzlich zur einfachen Verwendung im obigen Beispiel können berechnete Eigenschaften auch auf den Daten mehrerer Vue-Instanzen basieren. Solange sich eine der Daten ändert, ändern sich die berechneten Eigenschaften Die Ansicht wird ebenfalls aktualisiert.
<body> <p id="app"> <button @click="add()">补充货物1</button> <p>总价为:{{price}}</p> </p> </body> var app = new Vue({ el: '#app', data: { package1: { count: 5, price: 5 }, package2: { count: 10, price: 10 } }, computed: { price: function(){ return this.package1.count*this.package1.price+this.package2.count*this.package2.price //总价随着货物或价格的改变会重新计算 } }, methods: { //对象的方法 add: function(){ this.package1.count++ } } });
<p id="app1"></p> <p id="app2">{{ reverseText}}</p> var app1 = new Vue({ el: '#app1', data: { text: 'computed' } }); var app2 = new Vue({ el: '#app2', computed: { reverseText: function(){ return app1.text.split('').reverse().join(''); //使用app1的数据进行计算 } } });
var vm = new Vue({ el: '#demo', data: { firstName: 'Foo', lastName: 'Bar' }, computed: { fullName: { // getter get: function () { return this.firstName + ' ' + this.lastName }, // setter set: function (newValue) { var names = newValue.split(' '); this.firstName = names[0]; this.lastName = names[names.length - 1]; } } } }); //现在再运行 vm.fullName = 'John Doe' 时,setter 会被调用,vm.firstName 和 vm.lastName 也会相应地被更新。
3. Zwischenspeicherung berechneter Attribute
Im obigen Beispiel können wir zusätzlich zur Verwendung berechneter Attribute auch Methoden in Ausdrücken aufrufen Erzielen Sie den gleichen Effekt, wie zum Beispiel:<p>{{reverseTitle()}}</p> // 在组件中 methods: { reverseTitle: function () { return this.title.split('').reverse().join('') } }
, um den Wert abzurufen, und der andere verwendet reverseTitle, um den Wert abzurufen. reverseTitle()
<p>{{reverseTitle}}</p> <p>{{reverseTitle1()}}</p> <button @click="add()">补充货物1</button> <p>总价为:{{price}}</p> computed: { reverseTitle: function(){ return this.title.split('').reverse().join('') //而使用计算属性,只要title没变,页面渲染是不会重新进这里来计算的,而是使用了缓存。 }, price: function(){ return this.package1.count*this.package1.price+this.package2.count*this.package2.price } }, methods: { //对象的方法 add: function(){ this.package1.count++ }, reverseTitle1: function(){ return this.title.split('').reverse().join('') //点击补充货物,也会进这个方法,再次计算。不是刷新,而是只要页面渲染,就会进方法里重新计算。 } },
Werfen wir einen Blick auf die Verwendung der von Vue berechneten Eigenschaften
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>计算属性</title> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0"> <meta name="apple-mobile-web-app-capable" content="yes"> <meta name="apple-mobile-web-app-status-bar-style" content="black"> <script src="../js/Vue.js"></script> <script src="../js/vue-resource.js"></script> <script> window.onload = function(){ var vm = new Vue({ el:'#box', data: { a: 1, }, computed:{ b:function(){ return this.a+1; } } }); console.log(vm.a); } </script> </head> <body> <p id="box"> a => {{a}} <br> b => {{b}} </p> </body> </html> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>计算属性</title> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0"> <meta name="apple-mobile-web-app-capable" content="yes"> <meta name="apple-mobile-web-app-status-bar-style" content="black"> <script src="../js/Vue.js"></script> <script src="../js/vue-resource.js"></script> <script> window.onload = function(){ var vm = new Vue({ el:'#box', data: { a: 1, }, computed:{ b:function(){ return this.a+1; } } }); document.onclick = function(){ vm.a = 101; } } </script> </head> <body> <p id="box"> a => {{a}} <br> b => {{b}} </p> </body> </html> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>计算属性</title> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0"> <meta name="apple-mobile-web-app-capable" content="yes"> <meta name="apple-mobile-web-app-status-bar-style" content="black"> <script src="../js/Vue.js"></script> <script src="../js/vue-resource.js"></script> <script> window.onload = function(){ var vm = new Vue({ el:'#box', data: { a: 1, }, computed:{ b:{ get:function(){ return this.a+2; }, set:function(val){ this.a=val; } } } }); document.onclick = function(){ vm.b = 10; } } </script> </head> <body> <p id="box"> a => {{a}} <br> b => {{b}} </p> </body> </html>
Ich glaube, Sie haben es gelesen. Im Fall dieses Artikels beherrschen Sie die Methode. Weitere spannende Informationen finden Sie in anderen verwandten Artikeln auf der chinesischen PHP-Website! Empfohlene Lektüre:
Wie gehe ich mit Vue Axios Request Timeout um?
So implementieren Sie die Gerüstoptimierung im Webpack
Detaillierte Schritte für Webpack v4 von dev bis prd
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der von Vue berechneten Eigenschaften und Verwendung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!