我在使用 nuxt3 时遇到以下问题。
[slug].vue
正确加载初始slug的数据发生这种情况似乎是因为从未进行过新 slug 的 api 调用。
我的 [slug.vue]
文件如下所示:
<script setup lang="ts"> import { ref } from 'vue'; const route = useRoute(); const slug = ref(String(route.params.slug)); console.log(slug.value); const apicall = `https://swapi.dev/api/people/${slug.value}`; const { data: article } = await useFetch( `https://swapi.dev/api/people/${slug.value}` ); </script> <template> <div> <NuxtLink to="/">Back to Home</NuxtLink> <pre> {{ `https://swapi.dev/api/people/${slug}` }} {{ route.params.slug }} {{ article }} </pre> </div> </template>
整个设置可以在 stackblitz 上看到:https://stackblitz.com/edit/nuxt-starter-mkgfrw?file=pages%2F[slug].vue,pages%2Findex.vue
默认情况下,useFetch、useLazyFetch、useAsyncData 和 useLazyAsyncData 都会缓存当前浏览器会话中初始获取的初始响应负载,因此不会发出无用的后续请求。 (至少,我猜这就是背后的想法)
您可以通过传递选项“initialCache”并将其设置为“false”来更改每个提取可组合项的默认行为。
参见:https://v3.nuxtjs.org/api /composables/use-async-data#params
按照上面评论中的建议,并在此处检查文档:https://v3.nuxtjs.org/guide/features/data-fetching/#refreshing-data我尝试了以下有效的代码
此处的工作示例:https://stackblitz.com/edit/nuxt-starter-mkgfrw?file=pages%2F[slug].vue,app.vue