Maison > interface Web > Voir.js > Apprenez à utiliser les propriétés calculées dans Vue dans un article

Apprenez à utiliser les propriétés calculées dans Vue dans un article

青灯夜游
Libérer: 2021-12-03 19:30:56
avant
2704 Les gens l'ont consulté

Savez-vous quand calculer des propriétés avec Vue ? Comment utiliser les propriétés calculées ? L'article suivant vous amènera à comprendre les propriétés calculées de Vue et à présenter l'utilisation de base des propriétés calculées de Vue. J'espère qu'il vous sera utile.

Apprenez à utiliser les propriétés calculées dans Vue dans un article

Propriétés calculées

Parfois, nous mettons trop de logique dans le modèle, ce qui rend le modèle trop lourd et difficile à maintenir. Par exemple :

<div id="app">
  {{ message.split(&#39;&#39;).reverse().join(&#39;&#39;) }}
</div>
Copier après la connexion

Dans une telle situation, nous devons la regarder pendant un moment pour nous rendre compte que voici la chaîne inversée dans laquelle nous voulons afficher le message variable. De plus, une fois que nous voulons utiliser la chaîne inversée plusieurs fois. le modèle, nous allons plus gênant. Par conséquent, lorsque nous traitons d’une logique complexe, nous devons utiliser des propriétés calculées. [Recommandations associées : "Tutoriel vue.js"]

Utilisation de base

Les propriétés calculées sont des propriétés dans l'objet de configuration Vue. Elles sont utilisées comme suit :

<div id="app">
   <!-- 计算属性的值可以像data数据一样,直接被使用 --> 
  {{ someComputed }}
</div>
const vm = new Vue({
  el: &#39;#app&#39;,
  computed: {
     // 返回的值,就是计算属性的值
    someComputed () {
      return &#39;some values&#39;
    }
  }
})
Copier après la connexion

Par exemple, nous voulons obtenir une chaîne To. retournez la chaîne, nous pouvons utiliser des propriétés calculées pour le faire :

<div id="app">
  <p>原始字符串: "{{ msg }}"</p>
  <p>翻转字符处啊: "{{ reversedMsg }}"</p>
</div>
const vm = new Vue({
  el: &#39;#app&#39;,
  data: {
    msg: &#39;Hello&#39;
  },
  computed: {
    reversedMsg: function () {
      return this.msg.split(&#39;&#39;).reverse().join(&#39;&#39;);
    }
  }
})
Copier après la connexion

Nous pouvons voir que la valeur de reversedMsg dépend de la valeur de msg, donc lorsque nous modifions la valeur de msg, la valeur de reversedMsg changera également en conséquence.

Propriétés calculées et méthodes

En fait, les fonctions que nous avons mentionnées ci-dessus peuvent également être obtenues à l'aide de méthodes, telles que :

<div id="app">
  <p>原始字符串: "{{ msg }}"</p>
  <p>翻转字符串: "{{ reversedMsg() }}"</p>
</div>
const vm = new Vue({
  el: &#39;#app&#39;,
  data: {
    msg: &#39;Hello&#39;
  },
  methods: {
    reversedMsg: function () {
      return this.msg.split(&#39;&#39;).reverse().join(&#39;&#39;);
    }
  }
})
Copier après la connexion

Bien que l'appel de méthodes dans des expressions puisse également obtenir le même effet, il existe des différences entre l'utilisation de propriétés calculées. et en utilisant des méthodes Différence essentielle. Lors de l'utilisation de méthodes, chaque fois que la page est restituée, la méthode correspondante sera réexécutée, par exemple :

<div id="app">
  <p>{{ name }}</p>
  <p>{{ reversedMsg() }}</p>
</div>
const vm = new Vue({
  el: &#39;#app&#39;,
  data: {
    msg: &#39;Hello&#39;,
    name: &#39;shanshan&#39;
  },
  methods: {
    reversedMsg: function () {
      console.log(&#39;方法执行啦&#39;);
      return this.msg.split(&#39;&#39;).reverse().join(&#39;&#39;);
    }
  }
})
vm.name = &#39;duyi&#39;;
Copier après la connexion

Dans l'exemple ci-dessus, nous pouvons voir qu'une fois la valeur de name modifiée, la page sera réexécutée. -rendu, et à ce moment, la console imprimera La chaîne "La méthode est exécutée" signifie que la fonction reverseMsg est exécutée, mais nous n'avons pas besoin que la méthode soit exécutée, car les données modifiées n'ont rien à voir avec cela fonction. Si la logique au sein de cette fonction est très complexe, alors en termes de performances, c'est aussi une sorte de consommation.

Mais si vous utilisez des attributs calculés, il n'y aura pas de phénomène tel que :

const vm = new Vue({
  el: &#39;#app&#39;,
  data: {
    msg: &#39;Hello&#39;,
    name: &#39;shanshan&#39;
  },
  computed: {
    reversedMsg: function () {
      console.log(&#39;计算执行啦&#39;);
      return this.msg.split(&#39;&#39;).reverse().join(&#39;&#39;);
    }
  }
})
vm.name = &#39;duyi&#39;;
Copier après la connexion

Vous pouvez voir à ce moment que lorsque le nom des données est réattribué, les attributs calculés ne sont pas exécutés. Par conséquent, la différence la plus essentielle entre les propriétés calculées et les méthodes est la suivante : Les propriétés calculées sont mises en cache en fonction de dépendances réactives La valeur d'une propriété calculée est toujours stockée dans le cache tant que les données dont elle dépend ne changent pas. sera calculé à chaque accès. Les propriétés renverront immédiatement le résultat mis en cache au lieu d'exécuter à nouveau la fonction. La méthode consiste à déclencher un nouveau rendu à chaque fois, et l'appel de la méthode exécutera toujours à nouveau la fonction.

Alors, pourquoi avez-vous besoin d'une mise en cache ?

Supposons que nous ayons un attribut calculé A, qui nécessite de parcourir un vaste tableau et d'effectuer d'énormes calculs. Ensuite, nous devons utiliser cet attribut calculé A. S'il n'y a pas de cache, nous exécuterons à nouveau la fonction de A, de sorte que la surcharge de performances devient très importante.

Calcul approfondi des propriétés

En plus d'être écrites sous forme de fonction, les propriétés calculées peuvent également être écrites sous forme d'objet. Il y a deux propriétés dans l'objet, getter et setter. Elles sont écrites sous forme de fonctions. suit :

const vm = new Vue({
  el: &#39;#app&#39;,
  computed: {
    fullName: {
      getter () {
         // 一些代码
      },
      setter () {
         // 一些代码
      }
    }
  }
})
Copier après la connexion

getter Read En prenant

devant, on écrit directement l'attribut calculé sous forme de fonction, qui est la fonction getter. En d’autres termes, les propriétés calculées n’ont que des getters par défaut. Celui du getter est automatiquement lié à l'instance Vue.

Quand sera-t-il exécuté ?

Lorsque nous obtenons un attribut calculé, la fonction get sera exécutée. Le paramètre

const vm = new Vue({
  el: &#39;#app&#39;,
  data: {
    msg: &#39;Hello&#39;
  },
  computed: {
    reversedMsg: {
      getter () {
        return this.msg.split(&#39;&#39;).reverse().join(&#39;&#39;);
      }
    }
  }
})
Copier après la connexion

setter

est facultatif et la fonction set sera exécutée lors de la réaffectation d'une valeur à la propriété calculée. Paramètre : la valeur à réinitialiser. Celui du setter est automatiquement lié à l'instance Vue.

const vm = new Vue({
  el: &#39;#app&#39;,
  data: {
    msg: &#39;Hello&#39;,
    firstStr: &#39;&#39;
  },
  computed: {
    reversedMsg: {
      getter () {
        return this.msg.split(&#39;&#39;).reverse().join(&#39;&#39;);
      },
      setter (newVal) {
        this.firstStr = newVal[0];
      }
    }
  }
})
Copier après la connexion

Veuillez noter que même si une valeur est attribuée à une propriété calculée, la propriété calculée ne changera pas. Encore une fois, la propriété calculée ne sera recalculée que lorsque la propriété réactive dépendante change.

Practice_Name filter

personArr: [
  { 
    name: &#39;&#39;, 
    src: &#39;.jpg&#39;, 
    des: &#39;颈椎不好&#39;, 
    sex: &#39;m&#39;, 
    id: &#39;056482&#39; 
  },
  { 
    name: &#39;&#39;, 
    src: &#39;.jpg&#39;, 
    des: &#39;我是谁&#39;, 
    sex: &#39;f&#39;, 
    id: &#39;157894&#39; 
  },
  { 
    name: &#39;&#39;, 
    src: &#39;.jpg&#39;, des: &#39;我长得很好看&#39;, 
    sex: &#39;f&#39;, 
    id: &#39;2849245&#39; 
  },
  { 
    name: &#39;&#39;, 
    src: &#39;.jpeg&#39;, 
    des: &#39;你没有见过陌生的脸&#39;, 
    sex: &#39;m&#39;, 
    id: &#39;348515&#39; 
  },
  { 
    name: &#39;&#39;, 
    src: &#39;.jpeg&#39;, 
    des: &#39;瓜皮刘&#39;, 
    sex: &#39;m&#39;, 
    id: &#39;478454&#39;
  }
]
Copier après la connexion

Practice_Select all products

courseList: [
  {
    poster: &#39;.jpg&#39;,
    title: &#39;&#39;,
    price: 1299,
    cart: 1,
    id: 0
  },
  {
    poster: &#39;.jpg&#39;,
    title: &#39;&#39;,
    price: 1148,
    cart: 1,
    id: 1595402664708
  },
  {
    poster: &#39;.jpg&#39;,
    title: &#39;&#39;,
    price: 1,
    cart: 1,
    id: 1596305473062
  },
  {
    poster: &#39;.jpg&#39;,
    title: &#39;&#39;,
    price: 1,
    cart: 1,
    id: 1595413512182
  },
  {
    poster: &#39;.jpg&#39;,
    title: &#39;&#39;,
    price: 12798,
    cart: 1,
    id: 1596302161181
  },
  {
    poster: &#39;.jpg&#39;,
    title: &#39;&#39;,
    price: 1,
    cart: 1,
    id: 1596300025301,
  },
]
Copier après la connexion

Pour plus de connaissances liées à la programmation, veuillez visiter : Introduction à la programmation ! !

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!

Étiquettes associées:
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal