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

组件Props变更时如何获取数据?异步代码无法运行排查

问题出在哪

你写的代码里,Svelte的反应式标记$:后面跟着的是一个异步箭头函数的定义,并没有实际调用这个函数。每次params变更时,只会重新创建这个匿名函数,不会执行里面的API请求逻辑。另外data没声明会变成全局变量,也是个潜在问题。

两种修复写法

写法1:立即执行异步函数

把异步函数定义后马上调用,这样params一变就会触发API请求:

<script>
    export let params;
    let data; // 声明变量存储数据

    $: (async () => {
      data = await api.getData(params);
    })();
</script>

写法2:抽成单独函数再调用

可读性更好的写法,先定义异步函数,再在反应式语句里调用:

<script>
    export let params;
    let data;

    async function fetchData() {
      data = await api.getData(params);
    }

    $: fetchData(); // params变更时自动执行
</script>
额外提醒

别忘了处理API错误,避免未捕获异常:

$: (async () => {
  try {
    data = await api.getData(params);
  } catch (err) {
    console.error('数据请求失败:', err);
    // 这里可以添加错误提示的UI逻辑
  }
})();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 10:12:09