前提
React ReduxToolkitを使用してSPAのサイトを作成しています
(非同期通信にはaxiosを使用)
実現したいこと
1回のリクエストに10秒ほどかかる処理があり、その処理の途中で別画面に遷移したとき、前回のリクエストを中止したいです
発生している問題・エラーメッセージ
1回目のリクエストの処理中に別画面に遷移すると、2回目のリクエスト処理が動き、2回目のレスポンスが先に返却されます
その後、遅れて1回目のレスポンスが画面に現れてしまいます
最後にリクエストした返却値を画面で表示させたいので、初回リクエストの処理を中止したいです
該当のソースコード
fetchSlice.js
1export const fetchMonitorPost = createAsyncThunk( 2 'monitor/post', 3 async (arg, thunkAPI) => { 4 const { userId } = thunkAPI.getState().user; 5 const res = await axios.post(`${apiUrl}monitoring`, { 6 user_id: userId, 7 }); 8 return res.data; 9 } 10);
Buttoncomponentでチャンネルが変わるとリクエストを投げるようにしています。
ButtonComponent.js
1const [channnel, setChennel] = useState('1') 2 useEffect(() => { 3 dispatch(fetchMonitorPost ()); 4 }, [channel]);
試したこと
cancelトークンを使用してみようと思ったのですが、ReduxToolkitでの書き方が分かりませんでした。
よろしくおねがいします
回答1件
あなたの回答
tips
プレビュー