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

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

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

Redux-thunk (проще):

javascript
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
function* fetchData() {
  yield put({ type: 'FETCH_START' });
  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 });
  }
}

Основные подходы:

  1. Thunk - функции, которые могут диспатчить экшены
  2. Saga - генераторы для сложных потоков
  3. RTK Query (в Redux Toolkit) - встроенное решение для API-запросов

Для подключения middleware нужно обернуть store при создании:

javascript
const store = createStore(reducer, applyMiddleware(thunk));
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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