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

时间:2017-12-28 14:42:12

标签: reactjs redux flux redux-thunk currying

有没有办法可以在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的-形实转换

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

1 个答案:

答案 0 :(得分: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 });
      });
    });
  });
}

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