首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Nuxt 3 useFetch反应性/观察

Nuxt 3 useFetch反应性/观察
EN

Stack Overflow用户
提问于 2022-11-20 08:33:12
回答 1查看 36关注 0票数 0

我真的不明白Nuxt及其获取数据和反应性的方法是如何工作的。

我有一个使用useFetch从API检索数据的页面,在页面中我有直接更新该反应性数据的输入。最重要的是,我在调用修补程序api来更新值的输入上有@blur。

我有点困惑,为什么每次使用useFetch时都会调用这个修补程序api。如果我将useAsyncData与$fetch结合使用,则不会发生这种情况。那不是一样吗?提供了代码示例。那么,如果我使用useFetch而useAsyncData工作正常,那么为什么补丁api会在每一笔(而不是在模糊上)触发呢?

在下面提供的代码示例中,修补程序useFetch是有问题的,但是注释的代码工作得很好。

代码语言:javascript
复制
<script setup lang="ts">
const { data } = await useFetch<Project>(`/api/projects/${route.params.id}`);

// const { execute: update } = await useAsyncData(async () => {
//   await $fetch<Project>(`/api/projects/${route.params.id}`, {
//     method: "PATCH",
//     body: data.value,
//   });
// });
const { execute: update } = await useFetch(`/api/projects/${route.params.id}`, {
  method: "PATCH",
  body: data.value,
});
</script>

<template>
  <div v-if="data" class="flex items-stretch px-6 py-4 h-[calc(100vh_-_66px)]">
    <textarea
      v-if="data.notes"
      v-model="data.notes"
      rows="5"
      class="textarea textarea-primary w-full resize-none"
      placeholder="Enter your notes"
      @blur="update()"
    ></textarea>
  </div>
</template>
EN

回答 1

Stack Overflow用户

发布于 2022-11-20 11:00:16

好了找到解决办法了。data.value对象正在被监视以进行更改,并且它正在与v-model一起发生变化。

解决问题的办法:

代码语言:javascript
复制
const updateNotes = async () => {
  await $fetch(`/api/projects/${route.params.id}`, {
    method: "PATCH",
    body: data.value,
  });
};
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74506644

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档