Пытаясь понять создателей действий Redux - PullRequest
0 голосов
/ 09 октября 2018
export const loginUser = userData => dispatch => {
  dispatch(showLoading(true));
}

это прекрасно работает

, в то время как это выдает ошибку

export const loginUser = userData => {
    dispatch(showLoading(true));  // dispatch undefined
}

Если я правильно понимаю, 1-й фрагмент кода эквивалентен

function loginUser(userData) {
   // dispatch is available here since its taken as a param for this inner function
    return function(dispatch){ 
        dispatch(showLoading(true));
    }
}

это означает, что отправка доступна в функции loginUser здесь.Тогда почему недоступно во втором фрагменте кода.

1 Ответ

0 голосов
/ 09 октября 2018

Эквивалент функции стрелки

export const loginUser = userData => dispatch => {
  dispatch(showLoading(true));
}

равен

export function loginUser(userData) {
   return function(dispatch) {
      dispatch(showLoading(true));
   }
}

, и когда вы выполняете функцию loginUser, она выполняется как

loginUser(userData)(dispatch);

иследовательно, dispatch является аргументом для вызываемой внутренней функции и недоступен как значение внутри внешней функции.

Таким образом, в вашем примере

export const loginUser = userData => {
    dispatch(showLoading(true));  // dispatch undefined
}

dispatch не определено

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...