Различия
Показаны различия между двумя версиями страницы.
| Следующая версия | Предыдущая версия | ||
|
createasyncthunk_-_asinxronni_zapiti_v_redux_toolkit [2024/04/18 16:45] tro создано |
createasyncthunk_-_asinxronni_zapiti_v_redux_toolkit [2024/04/25 17:18] (текущий) tro |
||
|---|---|---|---|
| Строка 1: | Строка 1: | ||
| ====== createAsyncThunk - асинхронні запити в Redux Toolkit ====== | ====== createAsyncThunk - асинхронні запити в Redux Toolkit ====== | ||
| Redux Toolkit спрощує процес оголошення асинхронного генератора екшену за допомогою функції createAsyncThunk(). Першим аргументом вона приймає тип екшену, | Redux Toolkit спрощує процес оголошення асинхронного генератора екшену за допомогою функції createAsyncThunk(). Першим аргументом вона приймає тип екшену, | ||
| + | < | ||
| + | // src/ | ||
| + | |||
| + | import axios from " | ||
| + | import { createAsyncThunk } from " | ||
| + | |||
| + | axios.defaults.baseURL = " | ||
| + | |||
| + | export const fetchTasks = createAsyncThunk(" | ||
| + | const response = await axios.get("/ | ||
| + | return response.data; | ||
| + | }); | ||
| + | |||
| + | </ | ||
| + | < | ||
| + | // src/ | ||
| + | |||
| + | import { createSlice } from " | ||
| + | // Імпортуємо операцію | ||
| + | import { fetchTasks } from " | ||
| + | |||
| + | const tasksSlice = createSlice({ | ||
| + | name: " | ||
| + | initialState: | ||
| + | items: [], | ||
| + | isLoading: false, | ||
| + | error: null, | ||
| + | }, | ||
| + | // Додаємо обробку зовнішніх екшенів | ||
| + | extraReducers: | ||
| + | builder | ||
| + | .addCase(fetchTasks.pending, | ||
| + | .addCase(fetchTasks.fulfilled, | ||
| + | .addCase(fetchTasks.rejected, | ||
| + | }, | ||
| + | }); | ||
| + | |||
| + | export const tasksReducer = tasksSlice.reducer; | ||
| + | |||
| + | </ | ||