这不是真正的缓存问题。 useFetch 正在“冻结”API URL,您直接对字符串所做的更改将无法可靠地反映。如果要向 API URL 添加参数,请使用 useFetch 的 query 选项。此选项是反应式的,因此您可以使用 refs 并且查询将使用 refs 进行更新。或者,您可以使用提供的refresh() 方法
const limit = ref(10)
const skip = ref(20)
const { data: users, refresh: refreshUsers } = await useFetch(
'https://dummyjson.com/users',
{
query:{
limit,
skip
}
}
);
//use the data object directly to access the result
console.log(users.value)
//if you want to update users with different params later, simply change the ref and the query will update
limit.value = 23
//use refresh to manually refresh the query
refreshUsers()
这会导致第一个 API 调用 http://127.0.0.1:8000/api/tasks?limit=10&skip=20,然后是第二个更新值 http://127.0.0.1:8000/api/tasks?limit=23&skip=20
您可以不理会缓存,因为它只是一种解决方法,不能可靠地工作。
正如nuxt issue 中所讨论的,查询选项还没有得到很好的记录。我在 nuxt/framework 上创建了一个拉取请求,以将其反映在文档中。请参阅下面的完整说明:
使用query 选项,您可以将搜索参数添加到您的查询中。此选项从 unjs/ohmyfetch 扩展而来,并使用 ufo 创建 URL。对象会自动字符串化。
const param1 = ref('value1')
const { data, pending, error, refresh } = await useFetch('https://api.nuxtjs.dev/mountains',{
query: { param1, param2: 'value2' }
})
这导致https://api.nuxtjs.dev/mountains?param1=value1&param2=value2