refreshNuxtData
Refresh all or specific asyncData instances in Nuxt
refreshNuxtData
is used to refetch all or specific asyncData
instances, including those from useAsyncData
, useLazyAsyncData
, useFetch
, and useLazyFetch
.
If your component is cached by
<KeepAlive>
and enters a deactivated state, the asyncData
inside the component will still be refetched until the component is unmounted.Type
refreshNuxtData(keys?: string | string[])
Parameters
keys
: A single string or an array of strings askeys
that are used to fetch the data. This parameter is optional. AlluseAsyncData
anduseFetch
keys are re-fetched when nokeys
are explicitly specified.
Return Values
refreshNuxtData
returns a promise, resolving when all or specific asyncData
instances have been refreshed.
Examples
Refresh All Data
This example below refreshes all data being fetched using useAsyncData
and useFetch
in Nuxt application.
pages/some-page.vue
<script setup lang="ts">
const refreshing = ref(false)
async function refreshAll () {
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
and user
.
pages/some-page.vue
<script setup lang="ts">
const refreshing = ref(false)
async function refresh () {
refreshing.value = true
try {
// you could also pass an array of keys to refresh multiple data
await refreshNuxtData(['count', 'user'])
} finally {
refreshing.value = false
}
}
</script>
<template>
<div v-if="refreshing">
Loading
</div>
<button @click="refresh">Refresh</button>
</template>
If you have access to the
asyncData
instance, it is recommended to use its refresh
or execute
method as the preferred way to refetch the data.