试图了解Redux动作创建者

时间:2018-10-09 06:00:28

标签: javascript reactjs ecmascript-6 redux

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

这很好

这会引发错误

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

如果我理解正确,则第一个代码片段等于

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 :(得分:1)

等效于

的箭头功能
nv-nsight-cu-cli

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 } 未定义