我是ES6和React的新手,我一直在看箭头功能.为什么有些箭头函数在胖箭头之后使用花括号而有些使用括号?例如:
const foo = (params) => (
<span>
<p>Content</p>
</span>
);
Run Code Online (Sandbox Code Playgroud)
与
const handleBar = (e) => {
e.preventDefault();
dispatch('logout');
};
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助!
有人请解释以下内容:
我跟随丹阿布拉莫夫的讲座和做练习.
代码工作正常,但是当使用大括号编写以下特定函数时,测试失败**{ }**.
case 'toggleTodo' :
return (
state.map( (one) => {
oneTodo( one, action )
})
);
Run Code Online (Sandbox Code Playgroud)
相同的代码工作正常,没有花括号.
case 'toggleTodo' :
return (
state.map( (one) =>
oneTodo( one, action )
)
);
Run Code Online (Sandbox Code Playgroud)
这是JsBin.请参阅第31行.
javascript brackets curly-braces ecmascript-6 arrow-functions
我有一个箭头函数,看起来像这样(简化):
const f = arg => { arg.toUpperCase(); };
Run Code Online (Sandbox Code Playgroud)
但是当我打电话给它时,我得到undefined:
console.log(f("testing")); // undefined
Run Code Online (Sandbox Code Playgroud)
为什么?
例:
const f = arg => { arg.toUpperCase(); };
console.log(f("testing"));Run Code Online (Sandbox Code Playgroud)
(注意:对于上面箭头函数的特定问题,这是一个干净的,规范的dupetarget .)
我在代码中遇到了一个小问题,这让我感到困惑,并希望有人可以解释为什么会这样做.
代码1
sendText(){
return this.http.get('/api')
.map((response:Response) => response.json());
}
Run Code Online (Sandbox Code Playgroud)
代码2
sendText(){
return this.http.get('/api').map((response:Response) => {
response.json();
});
}
Run Code Online (Sandbox Code Playgroud)
这两个代码之间的关键区别在于,在代码2中,我在箭头函数之后放置了括号,将我的任务添加到这些括号中,在代码1中,我将括号取出并将任务放在一行上.
我的问题是,为什么不从服务器端回来为未定义在未来我的目标代码2与angular2而提供的订阅方法代码1返回我怀疑的对象.