@undefined_title

Redux thunk, откуда береться dispatch в экшине?

где мы можем использовать dispatch? это метод стора, почему тогда мы вызываем не в его контексте? в компоненте dispatch приходит через контекста, а откуда он береться в екшине из примера ниже который из доки redux-thunk, для меня это выглядит как будто он береться из window.
const INCREMENT_COUNTER = 'INCREMENT_COUNTER';

function increment() {
  return {
    type: INCREMENT_COUNTER
  };
}

function incrementAsync() {
  return dispatch => {
    setTimeout(() => {
      // Yay! Can invoke sync or async actions with `dispatch`
      dispatch(increment());
    }, 1000);
  };
}
  • Вопрос задан
  • 491 просмотр
Решения вопроса 1
maxfarseer
@maxfarseer
https://maxpfrontend.ru, обучаю реакту и компании
Он берется из middleware redux-thunk

Посмотрим на исходный код:

function createThunkMiddleware(extraArgument) {
  return ({ dispatch, getState }) => next => action => {
    if (typeof action === 'function') {
      return action(dispatch, getState, extraArgument);
    }

    return next(action);
  };
}


В котором видно, что если возвращаемый тип действия - function, то вызови все тоже самое, но с аргументами (dispatch, getState и extraArgument) - которые доступны через область видимости и являются тем "что надо".

ca799e34804e4ae7afeaffa56751700d.jpg
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы