当前位置:首页 > React

react如何获取数据

2026-02-12 01:11:06React

使用 Fetch API 获取数据

Fetch API 是浏览器原生支持的 HTTP 请求工具,无需额外安装库。发送 GET 请求并处理响应:

fetch('https://api.example.com/data')
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error('Error:', error));

在 React 组件中结合 useEffect 使用:

import { useState, useEffect } from 'react';

function DataComponent() {
  const [data, setData] = useState(null);

  useEffect(() => {
    fetch('https://api.example.com/data')
      .then(res => res.json())
      .then(json => setData(json));
  }, []);

  return <div>{data && data.map(item => <p key={item.id}>{item.name}</p>)}</div>;
}

使用 Axios 库获取数据

Axios 提供更简洁的 API 和错误处理机制。首先安装 axios:

npm install axios

在组件中使用:

import axios from 'axios';
import { useEffect, useState } from 'react';

function AxiosComponent() {
  const [data, setData] = useState([]);

  useEffect(() => {
    axios.get('https://api.example.com/data')
      .then(response => setData(response.data))
      .catch(error => console.log(error));
  }, []);

  return <div>{data.map(item => <div key={item.id}>{item.title}</div>)}</div>;
}

使用 React Query 管理数据

React Query 专为数据获取和状态管理设计。安装依赖:

npm install react-query

基本使用模式:

import { useQuery } from 'react-query';

function QueryComponent() {
  const { isLoading, error, data } = useQuery('repoData', () =>
    fetch('https://api.example.com/data').then(res => res.json())
  );

  if (isLoading) return 'Loading...';
  if (error) return 'An error occurred';

  return <div>{data.map(item => <span key={item.id}>{item.name}</span>)}</div>;
}

使用 useEffect 的注意事项

当需要在组件卸载时取消请求:

useEffect(() => {
  const controller = new AbortController();

  fetch('https://api.example.com/data', { signal: controller.signal })
    .then(res => res.json())
    .then(setData);

  return () => controller.abort();
}, []);

处理加载和错误状态

完整的异步数据获取应包含状态管理:

const [data, setData] = useState(null);
const [loading, setLoading] = useState(true);
const [error, setError] = useState(null);

useEffect(() => {
  const fetchData = async () => {
    try {
      const response = await axios.get('https://api.example.com/data');
      setData(response.data);
    } catch (err) {
      setError(err.message);
    } finally {
      setLoading(false);
    }
  };

  fetchData();
}, []);

if (loading) return <p>Loading data...</p>;
if (error) return <p>Error: {error}</p>;
return <DisplayComponent data={data} />;

使用自定义 Hook 封装逻辑

创建可复用的数据获取 Hook:

react如何获取数据

function useFetchData(url) {
  const [state, setState] = useState({ data: null, loading: true, error: null });

  useEffect(() => {
    setState(prev => ({ ...prev, loading: true }));

    fetch(url)
      .then(res => res.json())
      .then(data => setState({ data, loading: false, error: null }))
      .catch(error => setState({ data: null, loading: false, error }));
  }, [url]);

  return state;
}

// 在组件中使用
function MyComponent() {
  const { data, loading, error } = useFetchData('https://api.example.com/data');
  // ...渲染逻辑
}

标签: 数据react
分享给朋友:

相关文章

vue双向实现数据

vue双向实现数据

Vue 双向数据绑定的实现原理 Vue 的双向数据绑定主要通过 v-model 指令实现,其核心是结合了数据劫持(Object.defineProperty 或 Proxy)和发布-订阅模式。以下是具…

react 如何执行

react 如何执行

安装 Node.js 和 npm React 开发需要 Node.js 环境,因为它提供了 npm(或 yarn)包管理工具。从 Node.js 官网 下载并安装最新 LTS 版本。安装完成后,在终端…

react架构如何

react架构如何

React 架构核心概念 React 的架构围绕组件化、虚拟 DOM 和单向数据流设计。组件是构建用户界面的独立模块,分为函数组件和类组件。虚拟 DOM 通过高效的 Diff 算法减少直接操作真实 D…

react如何遍历

react如何遍历

遍历数组或对象的方法 在React中,遍历数组或对象通常用于渲染列表或动态生成内容。以下是几种常见的遍历方法: 使用map遍历数组map是遍历数组并返回新数组的高阶函数,适合渲染列表。 con…

react 如何运行

react 如何运行

运行 React 项目的步骤 安装 Node.js 确保系统已安装 Node.js(建议版本 16+),可通过官网下载并安装。安装后验证版本: node -v npm -v 创建 React 项目…

react 如何跳转

react 如何跳转

使用 React Router 进行页面跳转 React 应用中通常使用 react-router-dom 库实现页面跳转。以下是几种常见的跳转方式: 安装依赖 npm install react…