首页 文章

具有嵌套闭包的Redux动作创建器

提问于
浏览
0

有没有办法可以在Redux的动作创建器中返回多个嵌套闭包?

考虑一个 log 动作创建者而不是接受 log(topic, level, message) ,可以写成4个嵌套函数,每个函数只接受整个参数的一个范围,如 topic => level => message => (dispatch, getState)

直线前进:

function log(topic, level, message) {
  return {type: 'LOG', topic, level, message };
}

嵌套:

function log(topic) {
  return function(level) {
    return function(message) {
      return function(dispatch, getState) {
        dispatch({ type: 'LOG', topic, level, message });
      }
    }
  }
}

Redux-thunk

我知道 redux-thunk 正在使用类似的模式,利用Redux中间件系统来提供异步动作创建器,但无法使其与我想要的模式一起工作 .

1 回答

  • 0

    使用plain redux,所有动作函数都必须返回一个简单的JavaScript对象 . 诸如 thunk 之类的中间件允许您将thunk中间件将解析的函数返回到最终JavaScript对象以供redux处理 . 我看到的模式是该函数返回一个函数,该函数接受一个参数 dispatch

    function log(topic, level, message, getState) {
      return function(dispatch) {
        dispatch(function(dispatch) {
          dispatch (function(dispatch) {
            dispatch({ type: 'LOG', topic, level, message });
          });
        });
      });
    }
    

    请注意,这未经过测试 . 希望这能为您提供一般的想法 .

相关问题