На самом деле этого можно добиться, установив этот polyfill abortcontroller-polyfill
Вот быстрый пример отмены запросов:
import React from 'react';
import { Button, View, Text } from 'react-native';
import 'abortcontroller-polyfill';
export default class HomeScreen extends React.Component {
state = { todos: [] };
controller = new AbortController();
doStuff = () => {
fetch('https://jsonplaceholder.typicode.com/todos',{
signal: this.controller.signal
})
.then(res => res.json())
.then(todos => {
alert('done');
this.setState({ todos })
})
.catch(e => alert(e.message));
alert('calling cancel');
this.controller.abort()
}
render(){
return (
<View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}>
<Text>Details Screen</Text>
<Button title="Do stuff" onPress={() => { this.doStuff(); }} />
</View>
)
}
}
Таким образом, в основном в этом примере, когда вы нажимаете кнопку «doStuff», запрос немедленно отменяется, и вы никогда не получаете предупреждение «выполнено». Чтобы убедиться, что это работает, попробуйте закомментировать эти строки и снова нажмите кнопку:
alert('calling cancel');
this.controller.abort()
На этот раз вы получите предупреждение "Готово".
Это простой пример того, как вы можете отменить запрос, используя fetch в реагировать на натив, не стесняйтесь принять его в своем случае.
Вот ссылка на демонстрацию на snackexpo https://snack.expo.io/@mazinoukah/fetch-cancel-request
надеюсь, это поможет:)