Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ アプリでの非同期データの処理 | Redux Toolkitによる実践的なアプリケーション構築
ReactにおけるRedux Toolkitによる状態管理

bookアプリでの非同期データの処理

メニューを表示するにはスワイプしてください

ここでは、アプリ外部から取得したデータを追加します。空のリストから始めるのではなく、APIからタスクを読み込みます。

非同期アクションの作成

スライスを更新し、createAsyncThunk を追加します:

import { createAsyncThunk, createSlice } from '@reduxjs/toolkit';

export const fetchTasks = createAsyncThunk('tasks/fetchTasks', async () => {
  const response = await fetch('https://jsonplaceholder.typicode.com/todos?_limit=5');

  if (!response.ok) {
    throw new Error('Failed to fetch tasks');
  }

  return response.json();
});

非同期状態の管理

スライスを更新し、ローディングやエラーを管理します:

const initialState = {
  items: [],
  status: 'idle',
  error: null
};

extraReducersの追加:

extraReducers: (builder) => {
  builder
    .addCase(fetchTasks.pending, (state) => {
      state.status = 'loading';
    })
    .addCase(fetchTasks.fulfilled, (state, action) => {
      state.status = 'succeeded';
      state.items = action.payload;
    })
    .addCase(fetchTasks.rejected, (state, action) => {
      state.status = 'failed';
      state.error = action.error.message;
    });
}

データ取得のトリガー

コンポーネントの読み込み時にアクションをディスパッチ:

import { useEffect } from 'react';
import { useDispatch } from 'react-redux';
import { fetchTasks } from '../features/tasks/tasksSlice';

function TaskList() {
  const dispatch = useDispatch();

  useEffect(() => {
    dispatch(fetchTasks());
  }, [dispatch]);
}

非同期ロジックがアプリケーションに追加されました。タスクはAPIから読み込まれ、状態は読み込み中、成功、エラーの各状態を管理します。

すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 7.  4

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

セクション 7.  4
some-alt