You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
> This page assumes you've already read the [Components Basics](components.html). Read that first if you are new to components.
7
+
> Cette page présume que vous connaissez déjà les bases sur les [Composants](components.html). Lisez cette section en premier si vous découvrez les composants.
8
8
9
-
## Event Names
9
+
## Noms d'événements
10
10
11
-
<p>Cette page est en cours de traduction mais vous pouvez en trouver une ancienne version <ahref="https://fr.vuejs.org/v2/guide/components.html">ici</a>. Pour nous aider, vous pouvez participer sur <ahref="https://github.com/vuejs-fr/vuejs.org"target="_blank">le dépôt GitHub dédié de Vuejs-FR</a>.</p><p>Unlike components and props, event names don't provide any automatic case transformation. Instead, the name of an emitted event must exactly match the name used to listen to that event. For example, if emitting a camelCased event name:</p>
11
+
Contrairement aux composants et aux props, les noms d'événements ne fournissent pas de conversion kebab-case/camelCase. Le nom de l'événement émis doit correspondre exactement au nom utilisé pour écouter cet événement. Par exemple, si l'on émet un nom d'événement en camelCase :
12
12
13
13
```js
14
-
this.$emit('myEvent')
14
+
this.$emit('monEvenement')
15
15
```
16
16
17
-
Listening to the kebab-cased version will have no effect:
17
+
Alors écouter la version kebab-case n'aura pas d'effet :
Unlike components and props, event names will never be used as variable or property names in JavaScript, so there's no reason to use camelCase or PascalCase. Additionally, `v-on`event listeners inside DOM templates will be automatically transformed to lowercase (due to HTML's case-insensitivity), so`v-on:myEvent` would become `v-on:myevent` -- making `myEvent` impossible to listen to.
23
+
Contrairement aux composants et aux props, les noms d'événements ne seront jamais utilisés comme noms de variables ou de propriétés en JavaScript, donc il n'y a pas de raison d'utiliser camelCase ou PascalCase. De plus, les écouteurs d'événements `v-on`à l'intérieur de templates DOM seront automatiquement transformées en minuscules (à cause de l'insensibilité à la casse de HTML), donc`v-on:monEvenement` deviendra `v-on:monevenement` -- rendant `monEvenement` impossible à écouter.
24
24
25
-
For these reasons, we recommend you**always use kebab-case for event names**.
25
+
Pour ces raisons, nous recommandons de**toujours utiliser la kebab-case pour les noms d'événements**.
26
26
27
-
## Customizing Component`v-model`
27
+
## Personnaliser le`v-model` du composant
28
28
29
-
> New in 2.2.0+
29
+
> Nouveauté de la 2.2.0+
30
30
31
-
By default, `v-model`on a component uses`value`as the prop and`input`as the event, but some input types such as checkboxes and radio buttons may want to use the `value`attribute for a [different purpose](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/checkbox#Value). Using the`model`option can avoid a conflict in such cases:
31
+
Par défaut, `v-model`sur un composant utilise`value`comme prop et`input`comme événement, mais certains types de champs input tels que les cases à cocher et les boutons radio peuvent vouloir utiliser l'attribut `value`à [d'autres fins](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/checkbox#Value). Utiliser l'option`model`permet d'éviter un conflit dans ce genre de cas :
the value of`lovingVue`will be passed to the`checked` prop. The `lovingVue`property will then be updated when`<base-checkbox>`emits a `change`event with a new value.
58
+
la valeur de`lovingVue`sera passée à la prop`checked`. La propriété `lovingVue`sera ensuite mise à jour quand`<base-checkbox>`émettra un événement `change`avec une nouvelle valeur.
59
59
60
-
<pclass="tip">Note that you still have to declare the <code>checked</code> prop in component's <code>props</code> option.</p>
60
+
<pclass="tip">Notez que vous avez toujours besoin de déclarer la prop <code>checked</code> dans l'option <code>props</code> du composant.</p>
61
61
62
-
## Binding Native Events to Components
62
+
## Relier des événements natifs aux composants
63
63
64
-
There may be times when you want to listen directly to a native event on the root element of a component. In these cases, you can use the `.native`modifier for `v-on`:
64
+
Il peut y avoir des fois où vous voudrez écouter directement un événement natif sur l'élément racine d'un composant. Dans ces cas-là, vous pouvez utiliser le modificateur `.native`pour `v-on`:
This can be useful sometimes, but it's not a good idea when you're trying to listen on a very specific element, like an`<input>`. For example, the `<base-input>`component above might refactor so that the root element is actually a `<label>`element:
70
+
Cela peut être utile parfois, mais ce n'est pas une bonne idée quand vous essayez d'écouter l'événement sur un élément bien spécifique tel qu'un`<input>`. Par exemple, le composant `<base-input>`pourrait être revu de façon à ce que l'élément racine soit en fait un élément `<label>` :
71
71
72
72
```html
73
73
<label>
@@ -80,9 +80,9 @@ This can be useful sometimes, but it's not a good idea when you're trying to lis
80
80
</label>
81
81
```
82
82
83
-
In that case, the`.native`listener in the parent would silently break. There would be no errors, but the `onFocus`handler wouldn't be called when we expected it to.
83
+
Dans ce cas, l'écouteur`.native`dans le parent ne fonctionnera plus et vous ne serez pas prévenus. Il n'y aura pas d'erreurs, mais le gestionnaire d'événement `onFocus`ne sera pas appelé quand vous vous y attendrez.
84
84
85
-
To solve this problem, Vue provides a `$listeners`property containing an object of listeners being used on the component. For example:
85
+
Pour résoudre ce problème, Vue fournit une propriété `$listeners`contenant un objet avec les écouteurs utilisés sur votre composant. Par exemple :
86
86
87
87
```js
88
88
{
@@ -91,7 +91,7 @@ To solve this problem, Vue provides a `$listeners` property containing an object
91
91
}
92
92
```
93
93
94
-
Using the `$listeners` property, you can forward all event listeners on the component to a specific child element with `v-on="$listeners"`. For elements like `<input>`, that you also want to work with `v-model`, it's often useful to create a new computed property for listeners, like `inputListeners`below:
94
+
En utilisant la propriété `$listeners`, vous pouvez renvoyer tous les écouteurs d'événements sur le composant vers un élément enfant spécifique avec `v-on="$listeners"`. Pour les éléments tels que `<input>`, pour lesquels vous voulez aussi que `v-model` fonctionne, il est souvent utile de créer une nouvelle propriété calculée pour les écouteurs, tels que la propriété `inputListeners`ci-dessous:
Now the `<base-input>`component is a **fully transparent wrapper**, meaning it can be used exactly like a normal `<input>`element: all the same attributes and listeners will work.
131
+
À présent, le composant `<base-input>`est une **enveloppe complètement transparente**, c'est-à-dire qu'il peut être utilisé comme un élément `<input>`normal : tous les mêmes attributs et écouteurs d'événements fonctionneront.
132
132
133
-
## `.sync` Modifier
133
+
## Modificateur `.sync`
134
134
135
-
> New in 2.3.0+
135
+
> Nouveauté de la 2.3.0+
136
136
137
-
In some cases, we may need "two-way binding" for a prop. Unfortunately, true two-way binding can create maintenance issues, because child components can mutate the parent without the source of that mutation being obvious in both the parent and the child.
137
+
Dans certains cas, nous pouvons avoir besoin d'une « liaison à double sens » (*two-way binding*) pour une prop. Malheureusement, une vraie liaison à double sens peut créer des problèmes de maintenance, car les composants enfant peuvent faire muter le parent sans que la source de cette mutation soit explicite que ce soit dans le parent ou l'enfant.
138
138
139
-
That's why instead, we recommend emitting events in the pattern of `update:my-prop-name`. For example, in a hypothetical component with a `title` prop, we could communicate the intent of assigning a new value with:
139
+
C'est pourquoi à la place, nous recommandons d'émettre des événements en suivant le modèle `update:mon-nom-de-prop`. Par exemple, dans un composant hypothétique avec une prop `titre`, nous pourrions communiquer l'intention d'assigner une nouvelle valeur avec :
140
140
141
141
```js
142
-
this.$emit('update:title', newTitle)
142
+
this.$emit('update:titre', nouveauTitre)
143
143
```
144
144
145
-
Then the parent can listen to that event and update a local data property, if it wants to. For example:
145
+
Ensuite le parent peut écouter cet événement et mettre à jour une propriété de donnée locale s'il le désire. Par exemple :
146
146
147
147
```html
148
148
<text-document
149
-
v-bind:title="doc.title"
150
-
v-on:update:title="doc.title = $event"
149
+
v-bind:titre="doc.titre"
150
+
v-on:update:titre="doc.titre = $event"
151
151
></text-document>
152
152
```
153
153
154
-
For convenience, we offer a shorthand for this pattern with the `.sync`modifier:
154
+
Pour plus de commodité, nous proposons un raccourci pour cette technique avec le modificateur `.sync` :
The `.sync`modifier can also be used with `v-bind`when using an object to set multiple props at once:
160
+
Le modificateur `.sync`peut également être utilisé avec `v-bind`quand on utilise un objet pour assigner plusieurs props à la fois :
161
161
162
162
```html
163
163
<text-documentv-bind.sync="doc"></text-document>
164
164
```
165
165
166
-
This passes each property in the`doc`object (e.g. `title`) as an individual prop, then adds `v-on`update listeners for each one.
166
+
Cela passe chaque propriété dans l'objet`doc`(p. ex. `titre`) en tant que prop individuelle, puis ajoute des écouteurs `v-on`de mise à jour pour chacune.
167
167
168
-
<pclass="tip">Using <code>v-bind.sync</code> with a literal object, such as in <code>v-bind.sync="{ title: doc.title }"</code>, will not work, because there are too many edge cases to consider in parsing a complex expression like this.</p>
168
+
<pclass="tip">Utiliser <code>v-bind.sync</code> avec un objet littéral, par exemple <code>v-bind.sync="{ titre: doc.titre }"</code>, ne fonctionnera pas. En effet, il y a trop de cas particuliers à considérer pour pouvoir analyser une telle expression.</p>
0 commit comments