Как получить данные из API внутри санка, учитывая, что API прокидывается как extra argument в thunk middleware?

Extra argument передаётся третьим параметром thunk: после dispatch и getState. Из него можно получить API-клиент и выполнить запрос.

Короткий ответ

Что ответить на собеседовании

Extra argument передаётся третьим параметром thunk: после dispatch и getState. Из него можно получить API-клиент и выполнить запрос.

Подробный разбор

Ответ с пояснениями

Extra argument передаётся третьим параметром thunk: после dispatch и getState. Из него можно получить API-клиент и выполнить запрос.

Если middleware настроен с extraArgument: { api }, санка выглядит так:

const loadItems = () => async (dispatch, getState, { api }) => {
  dispatch({ type: 'items/loading' });
  try {
    const items = await api.getItems();
    dispatch({ type: 'items/loaded', payload: items });
  } catch {
    dispatch({ type: 'items/failed', payload: 'Ошибка загрузки' });
  }
};

Имя метода и формат результата определяются вашим API-клиентом. Для теста передайте fake-клиент через тот же аргумент.

Источник: redux.js.org.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее