-
-
Save adeelibr/d8f3f8859e2929f3f1adb80992f1dc09 to your computer and use it in GitHub Desktop.
| import React, { Component } from 'react'; | |
| import axios from 'axios'; | |
| class Example extends Component { | |
| signal = axios.CancelToken.source(); | |
| state = { | |
| isLoading: false, | |
| user: {}, | |
| } | |
| componentDidMount() { | |
| this.onLoadUser(); | |
| } | |
| componentWillUnmount() { | |
| this.signal.cancel('Api is being canceled'); | |
| } | |
| onLoadUser = async () => { | |
| try { | |
| this.setState({ isLoading: true }); | |
| const response = await axios.get('https://randomuser.me/api/', { | |
| cancelToken: this.signal.token, | |
| }) | |
| this.setState({ user: response.data, isLoading: true }); | |
| } catch (err) { | |
| if (axios.isCancel(err)) { | |
| console.log('Error: ', err.message); // => prints: Api is being canceled | |
| } else { | |
| this.setState({ isLoading: false }); | |
| } | |
| } | |
| } | |
| render() { | |
| return ( | |
| <div> | |
| <pre>{JSON.stringify(this.state.user, null, 2)}</pre> | |
| </div> | |
| ) | |
| } | |
| } |
If you want more in-depth knowledge of Abort Controllers, I wrote this article which might help you as well https://medium.com/free-code-camp/how-to-work-with-react-the-right-way-to-avoid-some-common-pitfalls-fc9eb5e34d9e
Cheers =)
Line 44 is extra inside the script and need to be removed.
@maxpaynestory good catch 👍 fixed it.
Have you done this but with redux? I mean, the axios call in an action creator, but still the cancellation from the component
Can be done, the principals are the same for AbortController
Since https://github.com/axios/axios#cancellation cancel token API proposal was withdrawn will this still work ?
Since https://github.com/axios/axios#cancellation cancel token API proposal was withdrawn will this still work ?
The concept of Abort Controller still works :))
Any snippet on how to use it with Hooks (useEffect) ?
Does it works fine in the cleanup function of useEffect?
@saksham-tj have a look at this stackoverflow thread https://stackoverflow.com/a/61056569/4921319
Here is another amazing article by @kentcdodds on abort controllers usage in functional components i.e, hooks https://epicreact.dev/myths-about-useeffect/
Thanks man, helped me just as i needed it.