链接箭头函数在redux中的含义是什么?
查看下面的示例,我看到了设置api中间件的过程:链接箭头函数在redux中的含义是什么?,redux,Redux,查看下面的示例,我看到了设置api中间件的过程: export default store => next => action => { const callAPI = action[CALL_API] if (typeof callAPI === 'undefined') { return next(action) } 这里到底发生了什么?我看到configureStore正在导入任何内容,并将其从redux传递给applyMiddleware,但这种语
export default store => next => action => {
const callAPI = action[CALL_API]
if (typeof callAPI === 'undefined') {
return next(action)
}
这里到底发生了什么?我看到configureStore正在导入任何内容,并将其从redux传递给applyMiddleware,但这种语句在js中意味着什么
我假设它导出一个匿名函数,返回一个函数,返回一个函数?刚刚试过这个:
var a = b => c => d => {
console.log('a:', a);
console.log('b:', b);
console.log('c:', c);
console.log('d:', d);
};
a(5)(6)(7);
// outputs b: 5, c: 6, and d: 7
要清楚地理解这一点,首先需要了解redux中的中间件是如何工作的。所以首先要通过 现在,即使看完了文档,你仍然感到困惑,不要担心它有点复杂,试着再看一遍:)。读了2-3遍后,我完全理解了这一点 现在,您在问题中提到的是一种过时的ES6语法。如果您尝试将其转换为香草javascript,则会出现如下情况
function (store) {
return function (next) {
return function (action) {
var callAPI = action[CALL_API];
if (typeof callAPI === 'undefined') {
return next(action);
}
};
};
};
如果你看到的只是函数的链接 功能专门化
箭头函数表示法简化了JavaScript
在这里,这只是一种方法,允许在不同的时间将参数绑定到函数,方法是使用而不是
当您在商店创建期间调用时,Redux将使用应用到的当前商店专门化您的中间件
然后它成为一个新的专用函数,只接受两个参数:
next=>action
其中next
是将在操作中调用的下一个中间件。(就像在Express中一样,它推广了这个概念,用于请求处理)
时间线
这里重要的是,所有这些函数专门化都是在不同的时间完成的
可以在创建存储期间绑定存储
可以在知道绑定到的存储之后进行绑定,也可以在绑定期间进行绑定,但可以在以后进行更新next
只有在您有效地分派操作时才知道,该操作可以随时发生操作
require
使用全局存储是一种副作用,因为函数在声明后将直接绑定到此存储
相反,Redux使用Currying来允许排序,它产生了一个无状态函数,可以在运行时重用和专门化
这样,您的中间件就可以到应用商店。我不明白为什么这样做而不是
(应用商店,下一步,操作)=>{}
。。。啊,我想我现在明白了。。。Redux必须为存储调用顶级函数(称为fStore),以便返回的函数现在将存储范围限定到它。然后,该函数返回一个函数(fNext),该函数接受一个派系并返回它自己的派系,该派系将链接到传递的派系…@JasonGoemaat是的,区别是(存储,下一步,操作)=>。
是一个单独的函数,您可以调用它,就像x(存储,下一步,操作)
whilestore=>next=>action
有一个不同的API,您可以调用它,比如x(store)(next)(action)
,它看起来可能没有太大的不同,但这意味着您可以执行类似a=x(store)的操作;b=剂量测定法(y)/*假设剂量测量通过y*/c=b(动作)
的“下一步”。如果您进行复杂的异步处理,它基本上是有用的