当前位置:首页 > React

react如何取消请求

2026-02-11 21:29:57React

取消请求的方法

在React中,取消请求通常通过AbortController实现。该API允许中止一个或多个Web请求,适用于fetchaxios等库。

react如何取消请求

const controller = new AbortController();
const signal = controller.signal;

fetch('https://api.example.com/data', { signal })
  .then(response => response.json())
  .catch(err => {
    if (err.name === 'AbortError') {
      console.log('请求已取消');
    }
  });

// 取消请求
controller.abort();

在React组件中的实现

结合useEffect的清理机制,可以在组件卸载时自动取消未完成的请求:

react如何取消请求

import { useEffect } from 'react';

function MyComponent() {
  useEffect(() => {
    const controller = new AbortController();
    const signal = controller.signal;

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

    return () => {
      controller.abort(); // 组件卸载时取消请求
    };
  }, []);
}

使用axios取消请求

axios内部支持AbortController,也可以通过其内置的CancelToken(旧版)实现:

import axios from 'axios';

const source = axios.CancelToken.source();

axios.get('https://api.example.com/data', {
  cancelToken: source.token
}).catch(err => {
  if (axios.isCancel(err)) {
    console.log('请求已取消');
  }
});

// 取消请求
source.cancel();

注意事项

  • 请求取消后,Promise会进入rejected状态,需通过错误类型区分是取消还是其他错误。
  • 对于并发请求,可共用同一个AbortController同时取消多个请求。
  • 在React 18严格模式下,开发环境组件会多次挂载/卸载,需确保取消逻辑幂等性。

标签: react
分享给朋友:

相关文章

react如何取消渲染

react如何取消渲染

取消渲染的方法 在React中,取消渲染通常指的是在某些条件下阻止组件渲染或中断正在进行的渲染过程。以下是几种常见的方法: 条件渲染 通过条件判断决定是否渲染组件或部分内容。可以使用if语句或三元运…

react moment如何使用

react moment如何使用

安装 react-moment 通过 npm 或 yarn 安装 react-moment: npm install react-moment 或 yarn add react-moment 基本…

react如何浮动

react如何浮动

使用 CSS 实现浮动 在 React 中实现浮动效果可以通过 CSS 的 float 属性完成。在组件的样式文件或内联样式中直接设置 float: left 或 float: right。…

react 如何跳转

react 如何跳转

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

如何升级react native

如何升级react native

升级 React Native 的步骤 检查当前版本 运行以下命令查看当前项目的 React Native 版本: react-native --version 更新 React Native CL…

react如何重新加载

react如何重新加载

重新加载当前页面 在React中重新加载当前页面可以通过window.location.reload()方法实现。该方法会强制浏览器重新加载当前URL,类似于按下F5刷新页面。 const relo…