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

React Query useQuery编译成功但页面空白的问题求助

React Query 数据加载时页面空白问题解决

你的问题核心是React Query 请求未完成时,data 处于 undefined 状态,直接访问 data.fact 触发 TypeError,导致组件渲染崩溃,页面空白。从控制台截图的报错也能验证这一点——无法读取 undefined 的 fact 属性。

解决方法

1. 利用 isLoading 状态处理加载中逻辑

useQuery 会返回 isLoading 状态,用来判断请求是否在进行中。在数据加载完成前,显示加载提示,避免访问未就绪的 data:

import React from 'react';
import { useQuery } from '@tanstack/react-query';
import Axios from 'axios';

export const Home = () => {
    const { data, isLoading } = useQuery(["cat"], () => {
        return Axios.get("https://catfact.ninja/fact").then((res) => res.data);
    });

    // 加载中时显示占位内容
    if (isLoading) {
        return <div>加载中...</div>;
    }

    return (
        <div>
            <h1>This is Home page </h1>
            <p>{ data.fact }</p>
        </div>
    );
}

2. 使用可选链操作符(?.)安全访问属性

可选链操作符允许你在访问嵌套属性时,自动处理上层值为 undefined 或 null 的情况,不会抛出错误:

import React from 'react';
import { useQuery } from '@tanstack/react-query';
import Axios from 'axios';

export const Home = () => {
    const { data } = useQuery(["cat"], () => {
        return Axios.get("https://catfact.ninja/fact").then((res) => res.data);
    });

    return (
        <div>
            <h1>This is Home page </h1>
            {/* 用?.避免data为undefined时的报错 */}
            <p>{ data?.fact || '暂无数据' }</p>
        </div>
    );
}

3. 给 data 设置默认解构值

在解构 useQuery 返回值时,给 data 设置默认空对象,确保访问 data.fact 时不会直接报错:

import React from 'react';
import { useQuery } from '@tanstack/react-query';
import Axios from 'axios';

export const Home = () => {
    // 解构时给data默认空对象
    const { data = {} } = useQuery(["cat"], () => {
        return Axios.get("https://catfact.ninja/fact").then((res) => res.data);
    });

    return (
        <div>
            <h1>This is Home page </h1>
            <p>{ data.fact || '暂无数据' }</p>
        </div>
    );
}

额外说明

React Query 在请求发起后,会经历 isLoading → data 就绪的状态变化。初学者容易忽略初始状态下 data 为 undefined 的情况,直接访问嵌套属性就会导致组件崩溃。上述三种方法都能有效避免这个问题,推荐优先使用第一种(显式处理加载状态),用户体验更友好。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 18:18:20