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

使用SWR获取数据时出现Uncaught TypeError错误求助

SWR 数据获取报错 Uncaught TypeError: Cannot read properties of undefined 解决方法

问题根源

SWR 在数据请求完成前,返回的 data 是 undefined,直接访问 data.dashboards 这类嵌套属性就会触发该错误。而你用 useEffect 时,要么是在请求回调完成后才处理数据,要么是加了数据存在性判断,所以没出现问题。

具体解决方案

  • 用可选链操作符规避:访问嵌套属性时添加 ?.,避免链式访问中出现 undefined 报错

    const { data } = useSWR('/api/dashboard', fetcher);
    const postsCount = data?.dashboards?.posts;
    
  • 设置默认值:解构时给 data 设置默认空结构,确保嵌套属性访问有依托

    const { data = { dashboards: {} } } = useSWR('/api/dashboard', fetcher);
    const likesCount = data.dashboards.likes; // 不会报错,值为 undefined 或实际数据
    
  • 先判断加载状态再渲染:在组件中先检查 data 是否存在,再渲染对应内容

    const { data } = useSWR('/api/dashboard', fetcher);
    
    if (!data) return <div>加载中...</div>;
    
    return (
      <div>
        <p>帖子数:{data.dashboards.posts}</p>
        <p>粉丝数:{data.dashboards.followers}</p>
      </div>
    );
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 14:45:40