javascript - 尝试了解 Redux 操作创建者

标签 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 函数中进行调度。 那么为什么第二个代码片段中不可用。

最佳答案

箭头函数相当于

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
}

调度未定义

关于javascript - 尝试了解 Redux 操作创建者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52714269/

相关文章:

javascript - TinyMCE 链接插件不会在内容中呈现 anchor 链接

meteor - 未捕获的类型错误 : fs. readFileSync 不是函数

javascript - 如何在 ReactJS 中验证输入类型 ="number"?

javascript - 数据重复并且输出显示两次。可能存在传播错误

node.js - React-Router 无法在组件内导入组件

javascript - 使用 .click() 模拟文件输入点击在 iOS 中不起作用 - Cordova

javascript - 如何在 PhantomJS 中滚动以触发延迟加载?

javascript - 动画 : `useNativeDriver` was not specified issue of ReactNativeBase Input

javascript - 使用参数解构从构造函数默认值设置javascript对象属性

javascript - facebook 连接 - 无法使用 ie 登录 - 权限被拒绝