I am confused by the following code.
Sourceexport const createProject = (project) => {
return (dispatch, getState, {getFirestore}) => {
// make async call to database
const firestore = getFirestore();
firestore.collection('projects').add({
...project,
authorFirstName: 'Net',
authorLastName: 'Ninja',
authorId: 12345,
createdAt: new Date()
}).then(() => {
dispatch({ type: 'CREATE_PROJECT_SUCCESS' });
}).catch(err => {
dispatch({ type: 'CREATE_PROJECT_ERROR' }, err);
});
}
};
我的问题是关于这一行的。
return (dispatch, getState, {getFirestore}) => {...
什么使这项工作?论据从何而来?什么叫他们?所有这些论点已经不在范围之内了吗?为什么我们需要createProject
返回第二个函数? createProject
返回第二个函数吗?还是立即调用内联函数?是什么触发return
函数运行的?
我通常对此模式非常困惑。有人可以帮我分解一下吗?
答案 0 :(得分:2)
从最简单的模式开始:
function outter(outterArg) {
return function(innerArg) {
console.log(outterArg, innerArg )
}
}
let retFunction = outter('outterValue')
// retFunction is that function returned from outter
// now call the retFunction
retFunction('innerValue')
// or call them on one line
outter('oneLineOutter')('oneLineInner')
答案 1 :(得分:1)
论点从哪里来?
就像其他函数一样,调用该函数时也会传入参数。
什么叫他们?
返回的函数在其他地方调用。在这种情况下,redux或react将调用您的createProject()
函数并获取其返回值。然后它将使用适当的参数调用返回的函数。
为什么我们需要createProject返回第二个函数?
Redux充满了这种模式,您有一个函数可以返回另一个函数。
createProject返回第二个函数吗?
是的。
还是立即调用内联函数?
不,稍后再调用。
什么触发返回函数运行?
Redux最终调用返回的函数来运行它。