createAsyncThunkによる非同期ロジック
createAsyncThunkとpending/fulfilled/rejectedのライフサイクルを使って、ReduxでAPI呼び出しを処理します。
「createAsyncThunkによる非同期ロジック」はCoddyKit上の無料React Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはReact Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 React Academyコースには全4レッスンが含まれています。
はじめに
createAsyncThunkとは
Thunkの定義
import { createAsyncThunk } from '@reduxjs/toolkit';
export const fetchUser = createAsyncThunk(
'users/fetchById',
async (userId) => {
const response = await fetch('/api/users/' + userId);
return response.json(); // becomes action.payload on fulfilled
}
);extraReducersでの処理
extraReducers: (builder) => {
builder
.addCase(fetchUser.pending, state => {
state.loading = true;
state.error = null;
})
.addCase(fetchUser.fulfilled, (state, action) => {
state.loading = false;
state.user = action.payload;
})
.addCase(fetchUser.rejected, (state, action) => {
state.loading = false;
state.error = action.error.message;
});
}Thunkのディスパッチ
const dispatch = useDispatch();
useEffect(() => {
dispatch(fetchUser(userId));
}, [userId]);Thunk内での状態へのアクセス
export const saveItem = createAsyncThunk(
'items/save',
async (item, { getState }) => {
const { auth } = getState();
return fetch('/api/items', {
method: 'POST',
headers: { Authorization: 'Bearer ' + auth.token },
body: JSON.stringify(item),
}).then(r => r.json());
}
);rejectWithValueによるエラー処理
export const fetchData = createAsyncThunk(
'data/fetch',
async (id, { rejectWithValue }) => {
const res = await fetch('/api/' + id);
if (!res.ok) return rejectWithValue({ status: res.status });
return res.json();
}
);
// In rejected case: action.payload.status is availableThunkのキャンセル
async (id, { signal }) => {
const res = await fetch('/api/' + id, { signal });
return res.json();
}ディスパッチしたThunkの完了待ち
const result = await dispatch(saveItem(data));
if (saveItem.fulfilled.match(result)) {
navigate('/success');
}Builder記法とオブジェクト記法
理解度チェック
まとめ
次のレッスン
よくある質問
「createAsyncThunkによる非同期ロジック」レッスンは無料ですか?
はい。「createAsyncThunkによる非同期ロジック」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、React Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 React Academyコースには全4レッスンが含まれています。
「createAsyncThunkによる非同期ロジック」で何を学びますか?
createAsyncThunkとpending/fulfilled/rejectedのライフサイクルを使って、ReduxでAPI呼び出しを処理します。 ブラウザで直接実行するハンズオンコードでReact Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
React Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのReact Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。
「createAsyncThunkによる非同期ロジック」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このReact Academyレッスンでコードを書いて実行できますか?
はい。すべてのReact Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- Redux ToolkitのSlicesとcreateSlice
- createAsyncThunkによる非同期ロジック
- RTK Query:Endpointsと自動キャッシュ
- Optimistic Updatesとキャッシュ無効化