Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Обробка асинхронних даних у додатку | Створення Реального Застосунку З Redux Toolkit
Керування Станом із Redux Toolkit у React

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

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

Секція 7. Розділ 4
some-alt