Nuxt/docs/content/2.app/3.data-fetching.md
Anthony Fu e13baf9867
feat(nuxt3): remove <script setup> transform and prefer top level await (#579)
Co-authored-by: Pooya Parsa <pyapar@gmail.com>
2021-09-30 20:19:55 +02:00

34 lines
1.1 KiB
Markdown

# Data Fetching
Nuxt provides `asyncData` to handle data fetching within you application.
## `asyncData`
Within your pages and components you can use `asyncData` to get access to data that resolves asynchronously.
### Usage
```js
asyncData(key: string, fn: () => Object, options?: { defer: boolean, server: boolean })
```
* **key**: a unique key to ensure that data fetching can be properly de-duplicated across requests
* **fn** an asynchronous function that **must return an object**.
* **options**:
- _defer_: whether to load the route before resolving the async function (defaults to `false`)
- _server_: whether the fetch the data on server-side (defaults to `true`)
Under the hood, `defer: false` uses `<Suspense>` to block the loading of the route before the data has been fetched. Consider using `defer: true` and implementing a loading state instead for a snappier user experience.
### Example
```vue
<script setup>
const { data } = await asyncData('time', () => $fetch('/api/count'))
</script>
<template>
Page visits: {{ data.count }}
</template>
```