标题不好,我会在找到这个名字后立即编辑。
我一直在学习Redux,它是我见过这种功能的第一个地方。
export default connect(null, actionCreators)(TodoApp)
我无法理解,显然" null"和" actionCreators" params传递给connect函数,但是"(TodoApp)"在做什么?
答案 0 :(得分:2)
Javascript支持第一类函数,它们可以像普通数据一样传递。因此connect(null, actionCreators)
会返回传递给TodoApp
的匿名函数。
一个简单易懂的例子是:
var obj = {
name: "Test",
age: 10
}
var f = () => {
// Do whatever f function should do
// Return an anonymous function that takes in an object as parameter
return (obj) => {
// Do whatever we want to to with the object
console.log(obj.name)
}
}
// These two methods are equivalent
// 1.-
f()(obj);
// 2.-
var f2 = f();
f2(obj);

答案 1 :(得分:1)
connect(null, actionCreators)(TodoApp);
和以下一样好:
var fun = connect(null, actionCreators);
fun(TodoApp);
它是这样的:
function connect(val1,val2){
console.log(val1,val2);
return function(val3){
console.log(val3);
}
}
var actionCreators = "X";
var TodoApp = "Some Object";
connect(null, actionCreators)(TodoApp);
如您所见,connect
需要两个输入,
返回一个匿名方法,该方法接受一个输入。