Skip to content
This repository was archived by the owner on Sep 3, 2024. It is now read-only.

Commit 0ef3259

Browse files
committed
Translate guide/async-data
1 parent 791b52b commit 0ef3259

File tree

1 file changed

+105
-0
lines changed

1 file changed

+105
-0
lines changed

Diff for: fr/guide/async-data.md

+105
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
---
2+
title: Données asynchrones
3+
description: Vous voudrez peut-être récupérer des données et faire le rendu côté serveur. Nuxt.js ajoute une méthode `asyncData` pour vous permettre de gérer les opérations asynchrones avant de définir les données du composant.
4+
---
5+
6+
> Vous voudrez peut-être récupérer des données et faire le rendu côté serveur. Nuxt.js ajoute une méthode `asyncData` pour vous permettre de gérer les opérations asynchrones avant de définir les données du composant.
7+
8+
## La méthode asyncData
9+
10+
Parfois, vous souhaitez simplement récupérer des données et les faire le rendu côté serveur sans utiliser de *store*. `asyncData` est appelé avant chaque chargement du composant (**uniquement pour les composants pages**).
11+
On peut l'appeler côté serveur ou avant de naviguer vers la route correspondante.
12+
Cette méthode reçoit [le contexte](/api#context) comme premier argument, vous pouvez l'utiliser pour récupérer des données et nuxt.js fusionnera avec les données du composant.
13+
14+
<div class="Alert Alert--orange">Vous **n'avez pas** accès à l'instance du composant via `this` au sein de `data` parce que la fonction est appelée **avant d'initier** le composant.</div>
15+
16+
Nuxt.js vous propose différentes façons d'utiliser `asyncData`. Choisissez celle avec laquelle vous êtes le plus familier:
17+
18+
1. Retourner une `Promise`. Nuxt.js attends que la Promise soit résolue avant de faire le rendu du composant.
19+
2. En utilisant [async/await](https://github.com/lukehoban/ecmascript-asyncawait) ([en savoir plus](https://zeit.co/blog/async-and-await))
20+
3. En définissant un callback comme second argument. Il doit être appelé comme suit: `callback(err, data)`
21+
22+
### Retourner une Promise
23+
```js
24+
export default {
25+
asyncData ({ params }) {
26+
return axios.get(`https://my-api/posts/${params.id}`)
27+
.then((res) => {
28+
return { title: res.data.title }
29+
})
30+
}
31+
}
32+
```
33+
34+
### Utiliser async/await
35+
```js
36+
export default {
37+
async asyncData ({ params }) {
38+
let { data } = await axios.get(`https://my-api/posts/${params.id}`)
39+
return { title: data.title }
40+
}
41+
}
42+
```
43+
44+
### Utiliser un callback
45+
```js
46+
export default {
47+
asyncData ({ params }, callback) {
48+
axios.get(`https://my-api/posts/${params.id}`)
49+
.then((res) => {
50+
callback(null, { title: res.data.title })
51+
})
52+
}
53+
}
54+
```
55+
56+
### Afficher les données
57+
58+
Le résultat d'`asyncData` sera **mergé** avec les données.
59+
Vous pouvez afficher les données au sein du template comme habituellement.
60+
61+
```html
62+
<template>
63+
<h1>{{ title }}</h1>
64+
</template>
65+
```
66+
67+
## Le Context
68+
69+
Pour voir la liste des attributs disponibles dans le `context`, jeter un oeil à [API Pages data](/api).
70+
71+
## Gestion des erreurs
72+
73+
Nuxt.js ajoute la méthode `error(params)` au `context`, vous pouvez l'appeler pour afficher la page d'erreur. `Params.statusCode` sera également utilisé pour faire le rendu avec le code de status approprié côté serveur.
74+
75+
Exemple avec une `Promise`:
76+
```js
77+
export default {
78+
asyncData ({ params, error }) {
79+
return axios.get(`https://my-api/posts/${params.id}`)
80+
.then((res) => {
81+
return { title: res.data.title }
82+
})
83+
.catch((e) => {
84+
error({ statusCode: 404, message: 'Post not found' })
85+
})
86+
}
87+
}
88+
```
89+
90+
Si vous utilisez l'argument `callback`, vous pouvez l'appeler directement en lui passant l'erreur et nuxt.js appellera la méthode `error` pour vous:
91+
```js
92+
export default {
93+
asyncData ({ params }, callback) {
94+
axios.get(`https://my-api/posts/${params.id}`)
95+
.then((res) => {
96+
callback(null, { title: res.data.title })
97+
})
98+
.catch((e) => {
99+
callback({ statusCode: 404, message: 'Post not found' })
100+
})
101+
}
102+
}
103+
```
104+
105+
Pour modifier la page d'erreur, voir [Views layouts section](/guide/views#layouts).

0 commit comments

Comments
 (0)