# 15 React 使用useEffect获取网络数据

要在React中实现这些功能,你可以按照以下步骤进行操作:

  1. 安装json-server模拟接口服务
bash 复制代码
npm install -g json-server

db.json

json 复制代码
{
  "users": [
    { "id": 1, "name": "John", "age": 30 },
    { "id": 2, "name": "Jane", "age": 25 },
    { "id": 3, "name": "Bob", "age": 35 }
  ]
}

在你的项目目录中创建一个JSON文件,比如db.json,用来模拟你的API数据。然后使用json-server启动服务器:

bash 复制代码
json-server --watch db.json --port 3001

这将在本地3001端口启动一个模拟的API服务,你可以通过 http://localhost:3001 访问你的API数据。

  1. 使用axios进行API请求

安装axios:

bash 复制代码
npm install axios

在React组件中使用axios来进行API请求。例如:

js 复制代码
import React, { useEffect, useState } from 'react';
import axios from 'axios';

const MyComponent = () => {
  const [data, setData] = useState([]);

  useEffect(() => {
    const fetchData = async () => {
      try {
        const response = await axios.get('http://localhost:3001/data');
        setData(response.data);
      } catch (error) {
        console.error('Error fetching data:', error);
      }
    };

    fetchData();
  }, []); // 空数组作为依赖表示只在组件挂载时执行一次

  return (
    <div>
      <h1>Data from API:</h1>
      <ul>
        {data.map(item => (
          <li key={item.id}>{item.name}</li>
        ))}
      </ul>
    </div>
  );
};

export default MyComponent;
  1. 在React中使用它们

在React组件中结合使用json-server和axios,从模拟的API服务获取数据并展示在页面上。在示例中,我们创建了一个React函数组件MyComponent,它使用axios从http://localhost:3001/data获取数据,并将其渲染到页面上。

需要注意的知识点:

  • useEffect钩子 :用于在函数组件中执行副作用操作,比如数据获取。在上面的例子中,我们使用了useEffect来确保数据只在组件挂载时获取一次。

  • useState钩子 :用于在函数组件中使用状态。在上面的例子中,我们使用useState来存储从API获取的数据。

  • axios库:用于发送HTTP请求。在上面的例子中,我们使用axios来从模拟的API服务获取数据。

  • JSON Server:用于在本地创建模拟的RESTful API。我们使用json-server来创建一个本地服务器,以模拟一个真实的后端API服务。

相关推荐
天蓝色的鱼鱼15 小时前
前端开发者的组件设计之痛:为什么我的组件总是难以维护?
前端·react.js
codingandsleeping15 小时前
使用orval自动拉取swagger文档并生成ts接口
前端·javascript
白水清风16 小时前
微前端学习记录(qiankun、wujie、micro-app)
前端·javascript·前端工程化
用户221520442780016 小时前
new、原型和原型链浅析
前端·javascript
阿星做前端16 小时前
coze源码解读: space develop 页面
前端·javascript
叫我小窝吧16 小时前
Promise 的使用
前端·javascript
前端康师傅17 小时前
JavaScript 作用域
前端·javascript
云枫晖18 小时前
JS核心知识-事件循环
前端·javascript
eason_fan18 小时前
Git 大小写敏感性问题:一次组件重命名引发的CI构建失败
前端·javascript
XiaoSong19 小时前
从未有过如此丝滑的React Native开发体验:EAS开发构建完全指南
前端·react.js