反应元素和胖箭头功能

MCa*_*Caw 8 javascript reactjs redux

在Redux示例中,使用的语法是:

const App = () => (
  <div>
    <AddTodo />
    <VisibleTodoList />
    <Footer />
  </div>
)
Run Code Online (Sandbox Code Playgroud)

我正在玩一个新的示例应用程序并使用大括号而不是像括号这样错误地输入上面的代码:

const App = () => {
  <div>
    <AddTodo />
    <VisibleTodoList />
    <Footer />
  </div>
}
Run Code Online (Sandbox Code Playgroud)

我控制台记录以下两个,结果似乎是相同的.我的问题是这两者之间有什么区别,为什么React像括号而不是大括号?

Aar*_*ius 21

TL; DR

您的第一个示例或多或少等同于:

var App = function() { return <div>...</div>; };
Run Code Online (Sandbox Code Playgroud)

你的第二个或多或少相当于:

var App = function() { <div>...</div>; };
Run Code Online (Sandbox Code Playgroud)

React可能抱怨在第二个例子中没有返回任何内容.

稍长版本

让我们把React从等式中拿出来.在es6中,您可以创建一个胖箭头函数,如下所示:

const getWord = () => {
  return 'unicorn';
}
Run Code Online (Sandbox Code Playgroud)

而且我们有一条捷径可以用更少的代码做同样的事情:

const getWord = () => 'unicorn';
Run Code Online (Sandbox Code Playgroud)

unicorn即使您没有明确键入return任何地方,也会返回.

在您的第一个示例中,您将JSX包装在括号中.我们的简单示例中的等价物是:

const getWord = () => ('unicorn');
Run Code Online (Sandbox Code Playgroud)

或这个

const getWord = () => (
  'unicorn'
);
Run Code Online (Sandbox Code Playgroud)

最后四个例子是等效的.希望有所帮助!