带括号而不是花括号的箭头函数语法?

IT技术 javascript reactjs
2021-04-06 22:22:44

我在 React 教程中看到了一个代码片段:

const App = ({title}) => (
  <div className="header">{title}</div>
);

乍一看,我以为它为App常量分配了一个箭头函数然后我注意到它不使用花括号,而是使用括号。

我理解箭头函数应该是(...) => {...},但在这里它使用(...) => (...)

那么,它是否是箭头函数?如果是,为什么还有另一种形式?我如何决定何时使用哪种表格?如果不是,这个函数类型在 js 中调用的是什么?

2个回答

是的,它也是一个箭头函数。唯一的区别是,如果您不使用大括号,它会强制返回:

const App = () => { return true; } // with braces you've to use the return statement

const App = () => true; // without braces it forces the return statement automatically

MDN箭头函数表达式的文件说,这个下面:

函数体

箭头函数可以有一个“简洁的主体”或通常的“块主体”。

在简洁的正文中,只指定了一个表达式,它成为隐式返回值。在块体中,您必须使用显式 return语句。

var func = x => x * x;
// concise body syntax, implied "return"

var func = (x, y) => { return x + y; };
// with block body, explicit "return" needed
@Amadan 的评论完善了答案。好点在那里。
2021-05-29 22:22:44
第二种形式也仅适用于单个表达式——您不能使用语句。
2021-06-12 22:22:44
如果我的箭头函数在返回之前有多行逻辑,我应该使用花括号还是圆括号?你能直接回答这个问题吗?
2021-06-18 22:22:44
@Leem 在那种情况下,您显然别无选择;必须使用大括号,因为您需要函数而不仅仅是返回值。
2021-06-19 22:22:44

使用语法时:

const a = ({ foo }) => ( <Component /> );

这意味着括号内的代码是固有返回的。即,强制返回的胖箭头。而这种语法:

const b = ({ bar }) => {
  some();
  thing();
};

这将指示执行的操作,但没有返回任何内容。即必须存在“return”关键字才能从函数返回任何内容,如下所示:

const c = ({ baz }) => { return <AnotherComponent />; }

带有返回(隐式或其他)的第一个和第三个示例对于可重用的函数和/或组件很有用。中间不返回任何内容的方法对于状态管理(例如 mobx/redux/flux)更有用,您需要实现 HOF 或返回状态或对象的函数。