UNPKG

react-use-cancel-token

Version:
100 lines (71 loc) 3.44 kB
# useCancelToken [![NPM](https://img.shields.io/npm/v/react-use-cancel-token.svg)](https://www.npmjs.com/package/react-use-cancel-token) [![Downloads](https://img.shields.io/npm/dt/react-use-cancel-token.svg)](https://www.npmjs.com/package/react-use-cancel-token) [![JavaScript Style Guide](https://img.shields.io/badge/code_style-standard-green.svg)](https://standardjs.com) > A handy react hook to cancel axios requests ### [Demo](https://axel-dev.github.io/react-use-cancel-token/) ## Install ```bash npm install --save react-use-cancel-token ``` ## Usage ### useAbortController ```tsx import * as React from 'react'; import axios from 'axios'; import useAbortController from 'react-use-cancel-token'; const Example = () => { const { newAbortSignal, cancelPreviousRequest, isCancel } =  useAbortController(); const handleClick = async () => { cancelPreviousRequest(); try { const response = await axios.get('request_url', { signal: newAbortSignal() }); if (response.status === 200) { // handle success } } catch (err) { if (isCancel(err)) return; console.error(err); } }; return <button onClick={handleClick}>send request</button>; }; ``` #### Outputs | Property | Type | Description | | ----------------------- | ------------------- | --------------------------------------------------------------------- | | `controller` | `MutableObjectRef` | Reference to the AbortController instance | | `newAbortSignal` | `() => AbortSignal` | Generate the abort signal sent in the Axios request | | `cancelPreviousRequest` | `() => void` | Cancel any previous Axios request | | `isCancel` | `() => boolean` | Check if the error returned in Axios response is an abort error | ### useCancelToken (deprecated) ```tsx import * as React from 'react'; import axios from 'axios'; import { useCancelToken } from 'react-use-cancel-token'; const Example = () => { const { newCancelToken, cancelPreviousRequest, isCancel } = useCancelToken(); const handleClick = async () => { cancelPreviousRequest(); try { const response = await axios.get('request_url', { cancelToken: newCancelToken() }); if (response.status === 200) { // handle success } } catch (err) { if (isCancel(err)) return; console.error(err); } }; return <button onClick={handleClick}>send request</button>; }; ``` #### Outputs | Property | Type | Description | | ----------------------- | ------------------- | --------------------------------------------------------------------- | | `source` | `MutableObjectRef` | Reference to Axios cancel token source | | `newCancelToken` | `() => CancelToken` | Generate the cancel token sent in the Axios request | | `cancelPreviousRequest` | `() => void` | Cancel any previous Axios request | | `isCancel` | `() => boolean` | Check if the error returned in Axios response is a cancel token error | ## License MIT © [AXeL-dev](https://github.com/AXeL-dev)