mirror of
https://github.com/nuxt/nuxt.git
synced 2024-11-29 17:07:22 +00:00
f26a801775
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> Co-authored-by: Daniel Roe <daniel@roe.dev>
74 lines
2.0 KiB
Markdown
74 lines
2.0 KiB
Markdown
---
|
|
title: 'refreshNuxtData'
|
|
description: refreshNuxtData refetches all data from the server and updates the page.
|
|
links:
|
|
- label: Source
|
|
icon: i-simple-icons-github
|
|
to: https://github.com/nuxt/nuxt/blob/main/packages/nuxt/src/app/composables/asyncData.ts
|
|
size: xs
|
|
---
|
|
|
|
::callout
|
|
`refreshNuxtData` re-fetches all data from the server and updates the page as well as invalidates the cache of [`useAsyncData`](/docs/api/composables/use-async-data) , `useLazyAsyncData`, [`useFetch`](/docs/api/composables/use-fetch) and `useLazyFetch`.
|
|
::
|
|
|
|
## Type
|
|
|
|
```ts
|
|
refreshNuxtData(keys?: string | string[])
|
|
```
|
|
|
|
**Parameters:**
|
|
|
|
* `keys`:
|
|
|
|
**Type**: `String | String[]`
|
|
|
|
`refreshNuxtData` accepts a single or an array of strings as `keys` that are used to fetch the data. This parameter is **optional**. All [`useAsyncData`](/docs/api/composables/use-async-data) and [`useFetch`](/docs/api/composables/use-fetch) are re-fetched when no `keys` are specified.
|
|
|
|
## Refresh All Data
|
|
|
|
This example below refreshes all data being fetched using [`useAsyncData`](/docs/api/composables/use-async-data) and [`useFetch`](/docs/api/composables/use-fetch) on the current page.
|
|
|
|
```vue [pages/some-page.vue]
|
|
<script setup lang="ts">
|
|
const refreshing = ref(false)
|
|
const refreshAll = async () => {
|
|
refreshing.value = true
|
|
try {
|
|
await refreshNuxtData()
|
|
} finally {
|
|
refreshing.value = false
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<template>
|
|
<div>
|
|
<button :disabled="refreshing" @click="refreshAll">
|
|
Refetch All Data
|
|
</button>
|
|
</div>
|
|
</template>
|
|
```
|
|
|
|
## Refresh Specific Data
|
|
|
|
This example below refreshes only data where the key matches to `count`.
|
|
|
|
```vue [pages/some-page.vue]
|
|
<script setup lang="ts">
|
|
const { pending, data: count } = await useLazyAsyncData('count', () => $fetch('/api/count'))
|
|
const refresh = () => refreshNuxtData('count')
|
|
</script>
|
|
|
|
<template>
|
|
<div>
|
|
{{ pending ? 'Loading' : count }}
|
|
</div>
|
|
<button @click="refresh">Refresh</button>
|
|
</template>
|
|
```
|
|
|
|
:read-more{to="/docs/getting-started/data-fetching"}
|