使用功能组件时使用大括号与圆括号制作组件

Posted

技术标签:

【中文标题】使用功能组件时使用大括号与圆括号制作组件【英文标题】:Making components with curly brackets versus parenthesis when using functional components 【发布时间】:2019-04-11 16:43:39 【问题描述】:

在 JSX 中制作函数式组件时使用大括号和圆括号有什么区别。我有一个名为 layout 的组件,它显示 props.children

但我想知道何时使用什么以及用于什么目的之间是否存在差异或最佳实践。

const layout = (props) => 
<Aux>
<div>Toolbar, SideDrawer, Backdrop</div>
<main>
    props.children
</main>
</Aux>

const layout = (props) => (
<Aux>
<div>Toolbar, SideDrawer, Backdrop</div>
<main>
    props.children
</main>
</Aux>
)

【问题讨论】:

Thie first 不应该工作,因为没有return 这可能在 SO 上讨论过很多次。它特定于箭头函数语法,而不是 React。 Arrow functions and the use of parentheses () or or () 的可能重复项 【参考方案1】:

只有第二个 sn-p 是正确的。 =&gt; (...) 是隐式箭头函数返回。括号是为了可读性与多行显式return 语句的一致性。可能是:

const layout = (props) => 
  <Aux>
  ...
  </Aux>

如果缩进适当且没有括号,悬挂缩进会使函数更难阅读。

为了让第一个 sn-p 起作用,应该有明确的箭头函数返回:

const layout = (props) => 
  return (
    <Aux>
    ...
    </Aux>
  )

请注意,如果 return&lt;Aux&gt; 位于不同的行,则需要括号。

【讨论】:

以上是关于使用功能组件时使用大括号与圆括号制作组件的主要内容,如果未能解决你的问题,请参考以下文章

自定义组件之间的双向绑定

Cocoa 文本编辑组件(面向程序员)

使用 array.map() 创建组件时如何动态分配 Prop 值

elementui的input组件不能输入小括号

如何使用功能方法(即非基于类)在 React js 中制作纯组件

属性值绑定:方括号 vs 大括号