如何在Nuxt 3中实现嵌套获取?我有两个API。第二个API必须基于第一个API中返回的值触发。
我尝试了下面的代码片段,但是它不起作用,因为page.Id
在被调用时是null
。我知道第一个API返回有效数据。所以我猜第二个API在第一个API返回结果之前被触发。
<script setup>
const route = useRoute()
const { data: page } = await useFetch(`/api/page/${route.params.slug}`)
const { data: paragraphs } = await useFetch(`/api/page/${page.Id}/paragraphs`)
</script>
显然,这是一个简单的尝试,因为没有检查第一个API是否返回任何数据,甚至没有等待响应。
在Nuxt2中,我会把第二个API调用放在.then()
中,但是对于这个新的组合API设置,我有点不知所措。
3条答案
按热度按时间pepwfjgg1#
您可以监视
page
,然后在页面可用时运行API调用,您应该将paragraphs
作为ref
,然后将析构的数据分配给它:koaltpgm2#
一个解决方案是避免使用
await
。另外,使用引用来保存值。这将允许您的UI和其他逻辑是React式的。cqoc49vn3#
您可以将第二个
useFetch
设置为不立即执行,直到第一个具有值:你也可以在这里省略
watch
选项,然后手动execute
第二个useFetch
。但是为了让它得到更新,你需要传递一个返回url的函数:永远不要在挂接内调用可组合对象。
更多
useFetch
选项可参见here。