我已经在其他地方搜索了正在发生的事情,但是找不到类似的示例。
export const validateToken = (token) => () =>
api.user.validateToken(token);
这句话是不是导出一个函数,该函数接受一个应该是令牌的对象,然后什么也不返回?然后调用validateToken函数,但传入初始令牌对象?
这和:和有什么区别
export const validateToken = (token) =>
api.user.validateToken(token);
为什么,如果我删除多余的()和=>,我会收到错误消息:
Error: Actions must be plain objects. Use custom middleware for async actions.
12 |
13 | componentDidMount() {
14 | // pass token from route
> 15 | this.props.validateToken(this.props.match.params.token);
16 | }
17 |
18 | render() {
我显然在这里错过了一些重要的事情。 任何帮助都表示赞赏。
答案 0 :(得分:1)
该函数实际上正在返回另一个函数。如果您不使用箭头语法编写它,则它看起来可能会更清晰一些:
function validateToken(token){
return function(){
return api.user.validateToken(token);
};
}
这在函数式编程中很常见。它与currying之类的概念有关,在概念中,您将部分参数应用于函数以创建新函数。
示例用法如下:
let validate1=validateToken('abc');
validate1(); //=>output from api.user.validateToken('abc')