Das ist der Code ... wie würden Sie einen solchen Ajax-Anruf abbrechen?Wie laufe ich async/abwarte xmlHttpRequest innerhalb von componentWillUnmount ab?
Oder, wie zu verhindern, dass reagieren, mir einen Fehler zu geben "setState aufgerufene unmounted Komponente"?
(HttpGet ist nur ein Wrapper für XMLHttpRequest und ein Versprechen)
async componentDidMount() {
const response = await httpGet("/ajaxRequest");
if(response) {
//the component has already been unmounted
this.setState(() => ({success: true}));
}
}
componentWillUnmount() {
//should abort possible running ajax
}
EDIT: Hier ist der Wrapper:
const httpGet = function (url) {
const request = new XMLHttpRequest;
request.open("GET", url, true);
return new Promise((resolve, reject) => {
request.onload(response => {
resolve(response);
});
request.onerror(() => {
reject("Network error");
});
request.send();
});
};
Können wir sehen, wie dieser Wrapper aussieht? –
Wenn Sie die Kontrolle über den Wrapper haben, gibt es ein Muster in der React-Dokumentation beschrieben https://reactjs.org/blog/2015/12/16/ismoverband-antipattern.html – sthzg
@AbdennourTOUMI Ich fügte den Wrapper –