diff --git a/src/v2/guide/computed.md b/src/v2/guide/computed.md index aac90b3fcc..0c1c0216bf 100644 --- a/src/v2/guide/computed.md +++ b/src/v2/guide/computed.md @@ -1,12 +1,12 @@ --- -title: Computed Properties and Watchers +title: Propriétés calculées et observateurs type: guide order: 5 --- -## Computed Properties +## Propriétés calculées -
**Cette page est en cours de traduction française. Revenez une autre fois pour lire une traduction achevée ou [participez à la traduction française ici](https://github.com/vuejs-fr/vuejs.org).**
In-template expressions are very convenient, but they are really only meant for simple operations. Putting too much logic into your templates can make them bloated and hard to maintain. For example: +Les expressions dans le template sont très pratiques, mais elles sont uniquement destinées à des opérations simples. Mettre trop de logique dans vos templates peut les rendre trop verbeux et difficiles à maintenir. Par exemple : ``` htmlOriginal message: "{{ message }}"
-Computed reversed message: "{{ reversedMessage }}"
+Message original : "{{ message }}"
+Message inversé calculé : "{{ reversedMessage }}"
Original message: "{{ message }}"
-Computed reversed message: "{{ reversedMessage }}"
+Message original : "{{ message }}"
+Message inversé calculé : "{{ reversedMessage }}"
Reversed message: "{{ reverseMessage() }}"
+Message inversé : "{{ reverseMessage() }}"
``` ``` js -// in component +// dans le composant methods: { reverseMessage: function () { return this.message.split('').reverse().join('') @@ -94,9 +94,9 @@ methods: { } ``` -Instead of a computed property, we can define the same function as a method instead. For the end result, the two approaches are indeed exactly the same. However, the difference is that **computed properties are cached based on their dependencies.** A computed property will only re-evaluate when some of its dependencies have changed. This means as long as `message` has not changed, multiple access to the `reversedMessage` computed property will immediately return the previously computed result without having to run the function again. +Au lieu d'une propriété calculée, nous pouvons définir la même fonction en tant que méthode. Pour le résultat final, les deux approches sont en effet exactement les mêmes. Cependant, la différence est que **les propriétés déclarées dans `computed` sont mises en cache selon leurs dépendances.** Une propriété calculée sera réévaluée uniquement quand certaines de ses dépendances auront changé. Cela signifie que tant que `message` n'a pas changé, les multiples accès à la propriété calculée `reversedMessage` retourneront immédiatement le résultat précédemment calculé sans avoir à réexécuter la fonction. -This also means the following computed property will never update, because `Date.now()` is not a reactive dependency: +Cela signifie également que la propriété calculée suivante ne sera jamais mise à jour, parce que `Date.now()` n'est pas une dépendance réactive : ``` js computed: { @@ -106,13 +106,13 @@ computed: { } ``` -In comparison, a method invocation will **always** run the function whenever a re-render happens. +En comparaison, une invocation de méthode exécutera **toujours** la fonction à chaque fois que se produira un re-déclenchement du rendu. -Why do we need caching? Imagine we have an expensive computed property **A**, which requires looping through a huge Array and doing a lot of computations. Then we may have other computed properties that in turn depend on **A**. Without caching, we would be executing **A**’s getter many more times than necessary! In cases where you do not want caching, use a method instead. +Pourquoi avons-nous besoin de mettre en cache ? Imaginez que nous avons une propriété calculée coûteuse **A**, qui exige une boucle dans un énorme tableau et qui fait beaucoup de calculs. Alors nous pouvons avoir d’autres propriétés calculées qui dépendent à leur tour de **A**. Sans la mise en cache, nous exécuterions l'accesseur de **A** autant de fois que nécessaire ! Dans les cas où vous ne souhaitez pas la mise en cache, utilisez une méthode à la place. -### Computed vs Watched Property +### Propriétés calculées vs observées -Vue does provide a more generic way to observe and react to data changes on a Vue instance: **watch properties**. When you have some data that needs to change based on some other data, it is tempting to overuse `watch` - especially if you are coming from an AngularJS background. However, it is often a better idea to use a computed property rather than an imperative `watch` callback. Consider this example: +Vue fournit une façon plus générique d'observer et de réagir aux changements de données sur une instance de Vue : **les propriétés watch**. Quand vous avez des données qu'il faut changer selon d'autres données, il est tentant d'abuser de `watch` (surtout si vous venez du monde d'AngularJS). Toutefois, il est souvent préférable d’utiliser une propriété calculée et non une fonction de retour impérative comme `watch`. Considérez cet exemple : ``` html- Ask a yes/no question: + Posez votre question (réponse par Oui ou Non) :
{{ answer }}
@@ -198,10 +198,10 @@ For example: ``` ``` html - - - - + + + + {% endraw %} -In this case, using the `watch` option allows us to perform an asynchronous operation (accessing an API), limit how often we perform that operation, and set intermediary states until we get a final answer. None of that would be possible with a computed property. +Dans ce cas, l'utilisation de l'option `watch` nous permet d'effectuer une opération asynchrone (accéder à une API), de limiter la fréquence d'exécution de cette opération et de définir des états intermédiaires jusqu'à ce que nous obtenions une réponse finale. Rien de tout cela ne serait possible avec une propriété calculée. -In addition to the `watch` option, you can also use the imperative [vm.$watch API](../api/#vm-watch). +En plus de l'option `watch`, vous pouvez aussi utiliser [l'API vm.$watch](../api/#vm-watch).