私はReduxのアクションとレデューサーを持つReact Nativeアプリケーションを持っています。私は、asyncron呼び出しを待つためにredux-thunkディスパッチを使用しています。そこ私のアプリケーションでのアクションです:Redux Axiosリクエストの取り消し
export const getObjects = (id, page) => {
return (dispatch) => {
axios.get(`URL`)
.then(response => {
dispatch({ type: OBJECTS, payload: response });
}).catch(error => {
throw new Error(`Error: objects -> ${error}`);
});
};
};
正常に動作していますが、アクションが要求を終えて、私はそれをキャンセルする必要があります前に、時にはユーザーが戻るボタンをクリックしてください。どのように分かれた行動でそれを行うことができますか?私はread thisでしたが、私はアキシャルでアボートのオプションが見つかりませんでした。私はAxys cancellationについて読んでいますが、JSが複数の戻り値をサポートしていないため、関数スコープでcancelメソッドを作成して戻すことができません。
他のReduxアクションでAxiosリクエストをキャンセルする最も良い方法は何ですか?
あなたが望むことをするもう一つの方法は、Axiosに要求を完了させ、別のアクションをディスパッチするステート(例えばsetCanceled)で 'cancelled:true'フラグをセットすることです。要求が完了して約束が解決されると、まずキャンセルされたフラグをチェックします。それが本当であれば、成功のアクションをディスパッチしません。あなたのケースを解決しますか? –