有没有办法可以在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中间件系统提供异步动作创建器,但不能使其与我想要的模式一起工作。
答案 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 });
});
});
});
}
请注意,这未经过测试。希望这能为您提供一般的想法。