在 React 应用中从 JSON 文件获取数据

发布日期:2026-07-02 12:20:04   来源 : 杭州电子商务研究院    浏览量 :16
杭州电子商务研究院 发布日期:2026-07-02 12:20:04  
16

介绍

创建用于本地测试和开发的API 模型可让您在更快的开发环境中工作。实现 API 模型的一种方法是将 JSON 数据复制到项目目录中的本地文件,然后对该文件而不是真实数据库进行 fetch 或 GET 调用。由于从外部源获取数据仍然是一项异步任务,因此在从 JSON 文件加载数据时可能会遇到许多错误。本指南将演示如何在 React 应用中正确从 JSON 文件获取数据并在前端使用它。

设置本地 JSON 文件

在空白的 Create React App 项目中,公共目录中创建一个名为data.json的本地 JSON 文件。从 React 组件发出的 Fetch API 调用始终会在此公共目录中查找文件或任何其他相关资产。Create-React-App 不会在编译期间自动将您的资产放入此目录中,因此您必须手动执行此操作。

接下来,在此文件中放入一些虚拟 JSON 数据。出于演示目的,以下示例中使用的 JSON 数据由JSON Generator生成。如果您使用自己的 JSON,请确保其格式正确。

使用 Fetch API 消费本地 JSON 数据

您需要执行的下一步是正确获取这些数据。创建一个使用 JavaScript 的 fetch API 获取本地 JSON 的方法getData() ,并在useEffect中调用它,如下所示。

      const getData=()=>{
    fetch('data.json'
    ,{
      headers : { 
        'Content-Type': 'application/json',
        'Accept': 'application/json'
       }
    }
    )
      .then(function(response){
        console.log(response)
        return response.json();
      })
      .then(function(myJson) {
        console.log(myJson);
      });
  }
  useEffect(()=>{
    getData()
  },[])
    

JSON 文件的路径应为'data.json''./data.json'。其他相对路径可能会导致您在尝试访问该资源时出现 404 错误。您还需要传入一些标头,指示Content-TypeAccept as application/json,以告知客户端您正在尝试访问并接受来自服务器的某些 JSON 资源。

将数据加载到组件中

使用useState钩子创建一个状态来存储此数据并将其呈现在 DOM 上。

      const [data,setData]=useState([]);
    

将获取调用中的 JSON 数据分配给此状态变量。

      const getData=()=>{
    fetch('data.json'
    ,{
      headers : { 
        'Content-Type': 'application/json',
        'Accept': 'application/json'
       }
    }
    )
      .then(function(response){
        console.log(response)
        return response.json();
      })
      .then(function(myJson) {
        console.log(myJson);
        setData(myJson)
      });
  }
    

根据 JSON 的结构,在渲染或加载数据之前,将相关检查放在组件的返回语句中。当组件挂载到 DOM 上时,会对 JSON 资源进行 GET 调用。但是,由于这是一项异步任务,因此返回语句会在 API 调用之前执行。由于您在获取所需数据后更新状态,因此组件的重新渲染会使用存储在状态中的 JSON 数据更新 DOM。此处使用的 JSON 是一个对象数组,因此相关检查是检查状态是否存在,然后验证其长度是否为非零,如下所示。

      return (
    <div className="App">
     {
       data && data.length>0 && data.map((item)=><p>{item.about}</p>)
     }
    </div>
 );
    

如果您的 JSON 返回一个对象,只需在输出时检查您的状态是否为空,否则您可能会收到错误。

看看下面的整个代码。

      import React,{useState,useEffect} from 'react';
import './App.css';

function App() {
  const [data,setData]=useState([]);
  const getData=()=>{
    fetch('data.json'
    ,{
      headers : { 
        'Content-Type': 'application/json',
        'Accept': 'application/json'
       }
    }
    )
      .then(function(response){
        console.log(response)
        return response.json();
      })
      .then(function(myJson) {
        console.log(myJson);
        setData(myJson)
      });
  }
  useEffect(()=>{
    getData()
  },[])
  return (
    <div className="App">
     {
       data && data.length>0 && data.map((item)=><p>{item.about}</p>)
     }
    </div>
  );
}

export default App;
    

结论

您还可以使用功能强大的第三方库 Axios 对本地 JSON 文件进行 GET 调用,而不是使用 fetch API。通过直接从本地 JSON 文件加载数据,您可以避免在本地开发中对服务器进行大量不必要的调用。或者,通过将 JSON 文件保存为常规 JavaScript 文件并全局导出整个对象,您可以在任何组件中使用它,并在使用外部 API 时节省大量开发时间。

了解更多

探索 Pluralsight 的这些 JSON 和 React 课程以继续学习:

以上内容来自杭州电子商务研究院推送
关注
关于我们
热门推荐
合作伙伴
免责声明:本站部分资讯来源于网络,如有侵权请及时联系客服,我们将尽快处理
Copyright © 2025-2027 ToB产业网址导航 公安备案 浙公网安备33010602013138号 浙ICP备16025413号-9
支持 反馈 关注 数据