You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Nuxt中使用useLazyFetch无法监听数据与错误变化的问题求助

解决useLazyFetch监听不生效的问题

问题原因

你给useLazyFetch添加了await,这会让代码等待请求完成后才执行后续的watch逻辑。此时data和err已经完成状态更新,watch错过了它们的变化时机,所以不会触发回调。另外,useLazyFetch本身是懒加载设计,不需要用await等待请求完成。

修复方案

1. 移除不必要的await

直接解构useLazyFetch返回的响应式对象,让watch在请求过程中就能监听状态变化:

const { data, pending, error: err, refresh } = useLazyFetch('/api/posts');

watch(err, newErr => {
  console.error('error', newErr, err.value);
});

watch(data, newData => {
  console.log('data', data.value, newData);
});

2. 可选:监听初始状态

如果需要在data或err的初始值加载完成时也触发watch,可以添加immediate: true配置:

const { data, pending, error: err, refresh } = useLazyFetch('/api/posts');

watch(err, newErr => {
  console.error('error', newErr, err.value);
}, { immediate: true });

watch(data, newData => {
  console.log('data', data.value, newData);
}, { immediate: true });

额外说明

  • useLazyFetch返回的data和err都是ref响应式对象,在JavaScript逻辑中需要通过.value访问实际值(模板中会自动解包,所以模板能正常显示)
  • 若后续调用refresh重新发起请求,watch会正常捕捉到新的状态变化

内容的提问来源于stack exchange,提问作者Auloma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 06:48:16