Встречается на собеседованиях • сегодня

Как работать с асинхронными запросами в Redux

Для работы с асинхронными запросами в Redux используют middleware, чаще всего redux-thunk или redux-saga.

Redux Thunk (проще):

javascript
// action creator
const fetchData = () => async (dispatch) => {
  dispatch({ type: 'FETCH_START' });
  try {
    const response = await fetch('api/data');
    const data = await response.json();
    dispatch({ type: 'FETCH_SUCCESS', payload: data });
  } catch (error) {
    dispatch({ type: 'FETCH_ERROR', payload: error });
  }
};

Redux Saga (сложнее, но мощнее):

javascript
import { call, put, takeEvery } from 'redux-saga/effects';

function* fetchDataSaga() {
  try {
    const response = yield call(fetch, 'api/data');
    const data = yield response.json();
    yield put({ type: 'FETCH_SUCCESS', payload: data });
  } catch (error) {
    yield put({ type: 'FETCH_ERROR', payload: error });
  }
}

function* watchFetchData() {
  yield takeEvery('FETCH_REQUEST', fetchDataSaga);
}

RTK Query (современный подход):
Встроен в Redux Toolkit, автоматически генерирует actions и reducers.

Выбор зависит от сложности проекта:

  • Простые запросы → redux-thunk
  • Сложная логика (отмена, ретраи) → redux-saga
  • Новые проекты → RTK Query
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы