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
Actions are similar to mutations, the difference being that:
3
+
Les actions sont similaires aux mutations, à la différence que :
4
4
5
-
-Instead of mutating the state, actions commit mutations.
6
-
-Actions can contain arbitrary asynchronous operations.
5
+
-Au lieu de modifier l'état, les actions actent des mutations.
6
+
-Les actions peuvent contenir des opérations asynchrones.
7
7
8
-
Let's register a simple action:
8
+
Enregistrons une simple action:
9
9
10
10
```js
11
11
conststore=newVuex.Store({
@@ -25,9 +25,9 @@ const store = new Vuex.Store({
25
25
})
26
26
```
27
27
28
-
Action handlers receive a context object which exposes the same set of methods/properties on the store instance, so you can call`context.commit`to commit a mutation, or access the state and getters via `context.state`and`context.getters`. We will see why this context object is not the store instance itself when we introduce[Modules](modules.md)later.
28
+
Les gestionnaires d'action reçoivent un objet contexte qui expose le même ensemble de méthodes et propriétés que l'instance du store, donc vous pouvez appeler`context.commit`pour acter une mutation, ou accéder à l'état et aux accesseurs via `context.state`et`context.getters`. Nous verrons pourquoi cet objet contexte n'est pas l'instance du store elle-même lorsque nous présenterons les[Modules](modules.md)plus tard.
29
29
30
-
In practice, we often use ES2015 [argument destructuring](https://github.com/lukehoban/es6features#destructuring) to simplify the code a bit (especially when we need to call`commit`multiple times):
30
+
En pratique, nous utilisons souvent la [destructuration d'argument](https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Op%C3%A9rateurs/Affecter_par_d%C3%A9composition) pour simplifier quelque peu le code (particulièrement si nous avons besoin d'appeler`commit`plusieurs fois) :
31
31
32
32
```js
33
33
actions: {
@@ -37,15 +37,15 @@ actions: {
37
37
}
38
38
```
39
39
40
-
### Dispatching Actions
40
+
### Propager des actions dans les composants
41
41
42
-
Actions are triggered with the `store.dispatch`method:
42
+
Les actions sont déclenchées par la méthode `store.dispatch` :
43
43
44
44
```js
45
45
store.dispatch('increment')
46
46
```
47
47
48
-
This may look dumb at first sight: if we want to increment the count, why don't we just call`store.commit('increment')`directly? Well, remember that **mutations must be synchronous**? Actions don't. We can perform **asynchronous**operations inside an action:
48
+
Cela peut sembler idiot au premier abord : si nous avons besoin d'incrémenter le compteur, pourquoi ne pas simplement appeler`store.commit('increment')`directement ? Et bien, vous rappelez-vous que **les mutations doivent être synchrones** ? Les actions ne suivent pas cette règle. Il est possible de procéder à des opérations **asynchrones**dans une action:
49
49
50
50
```js
51
51
actions: {
@@ -57,48 +57,48 @@ actions: {
57
57
}
58
58
```
59
59
60
-
Actions support the same payload format and object-style dispatch:
60
+
Les actions prennent également en charge les paramètres additionnels (« payload ») et les objets pour propager :
61
61
62
62
```js
63
-
//dispatch with a payload
63
+
//propager avec un paramètre additionnel
64
64
store.dispatch('incrementAsync', {
65
65
amount:10
66
66
})
67
67
68
-
//dispatch with an object
68
+
//propager avec un objet
69
69
store.dispatch({
70
70
type:'incrementAsync',
71
71
amount:10
72
72
})
73
73
```
74
74
75
-
A more practical example of real-world actions would be an action to checkout a shopping cart, which involves **calling an async API**and **committing multiple mutations**:
75
+
Un exemple concret d'application serait une action pour vider un panier d'achats, ce qui implique **d'appeler une API asynchrone**et d'**acter de multiples mutations**:
76
76
77
77
```js
78
78
actions: {
79
79
checkout ({ commit, state }, products) {
80
-
//save the items currently in the cart
80
+
//sauvegarder les articles actuellement dans le panier
81
81
constsavedCartItems= [...state.cart.added]
82
-
//send out checkout request, and optimistically
83
-
//clear the cart
82
+
//envoyer la requête de checkout,
83
+
//et vider le panier
84
84
commit(types.CHECKOUT_REQUEST)
85
-
//the shop API accepts a success callback and a failure callback
85
+
//l'API de la boutique en ligne prend une fonction de rappel en cas de succès et une autre en cas d'échec
Note we are performing a flow of asynchronous operations, and recording the side effects (state mutations) of the action by committing them.
97
+
Notez que nous procédons à un flux d'opérations asynchrones, et enregistrons les effets de bord (mutation de l'état) de l'action en les actant.
98
98
99
-
### Dispatching Actions in Components
99
+
### Propager des actions dans les composants
100
100
101
-
You can dispatch actions in components with `this.$store.dispatch('xxx')`, or use the `mapActions`helper which maps component methods to `store.dispatch`calls (requires root `store`injection):
101
+
Vous pouvez propager des actions dans les composants avec `this.$store.dispatch('xxx')`, ou en utilisant la fonction utilitaire `mapActions`qui attache les méthodes du composant aux appels de `store.dispatch`(nécessite l'injection de `store`à la racine) :
102
102
103
103
```js
104
104
import { mapActions } from'vuex'
@@ -107,23 +107,23 @@ export default {
107
107
// ...
108
108
methods: {
109
109
...mapActions([
110
-
'increment',//map this.increment() to this.$store.dispatch('increment')
111
-
112
-
// mapActions also supports payloads:
113
-
'incrementBy'// this.incrementBy(amount) maps to this.$store.dispatch('incrementBy', amount)
110
+
'increment'//attacher `this.increment()` à `this.$store.dispatch('increment')`
111
+
112
+
//`mapActions` supporte également les paramètres additionnels :
113
+
'incrementBy'//attacher `this.incrementBy(amount)` à `this.$store.dispatch('incrementBy', amount)`
114
114
]),
115
115
...mapActions({
116
-
add:'increment'//map this.add() to this.$store.dispatch('increment')
116
+
add:'increment'//attacher `this.add()` à `this.$store.dispatch('increment')`
117
117
})
118
118
}
119
119
}
120
120
```
121
121
122
-
### Composing Actions
122
+
### Composer les actions
123
123
124
-
Actions are often asynchronous, so how do we know when an action is done? And more importantly, how can we compose multiple actions together to handle more complex async flows?
124
+
Les actions sont souvent asynchrones, donc comment savoir lorsqu'une action est terminée ? Et plus important, comment composer plusieurs actions ensemble pour manipuler des flux asynchrones plus complexes ?
125
125
126
-
The first thing to know is that`store.dispatch`can handle Promise returned by the triggered action handler and it also returns Promise:
126
+
La première chose à savoir est que`store.dispatch`peut gérer la Promesse (« Promise ») retournée par le gestionnaire d'action déclenché et par conséquent vous pouvez également retourner une Promesse :
127
127
128
128
```js
129
129
actions: {
@@ -138,15 +138,15 @@ actions: {
138
138
}
139
139
```
140
140
141
-
Now you can do:
141
+
Maintenant vous pouvez faire :
142
142
143
143
```js
144
144
store.dispatch('actionA').then(() => {
145
145
// ...
146
146
})
147
147
```
148
148
149
-
And also in another action:
149
+
Et également dans une autre action:
150
150
151
151
```js
152
152
actions: {
@@ -159,20 +159,20 @@ actions: {
159
159
}
160
160
```
161
161
162
-
Finally, if we make use of [async / await](https://tc39.github.io/ecmascript-asyncawait/), a JavaScript feature landing very soon, we can compose our actions like this:
162
+
Pour finir, nous pouvons utiliser de [async / await](https://tc39.github.io/ecmascript-asyncawait/), une fonctionnalité JavaScript qui sera disponible très bientôt, nous pouvons composer nos actions ainsi :
163
163
164
164
```js
165
-
//assuming getData() and getOtherData() return Promises
165
+
//sachant que `getData()` et `getOtherData()` retournent des Promesses.
166
166
167
167
actions: {
168
168
asyncactionA ({ commit }) {
169
169
commit('gotData', awaitgetData())
170
170
},
171
171
asyncactionB ({ dispatch, commit }) {
172
-
awaitdispatch('actionA') //wait for actionA to finish
172
+
awaitdispatch('actionA') //attendre que `actionA` soit finie
173
173
commit('gotOtherData', awaitgetOtherData())
174
174
}
175
175
}
176
176
```
177
177
178
-
> It's possible for a`store.dispatch`to trigger multiple action handlers in different modules. In such a case the returned value will be a Promise that resolves when all triggered handlers have been resolved.
178
+
> Il est possible pour un`store.dispatch`de déclencher plusieurs gestionnaires d'action dans différents modules. Dans ce genre de cas, la valeur retournée sera une Promesse qui se résoud quand tous les gestionnaires déclenchés ont été résolus.
0 commit comments