【问题标题】:How do you do an if else statement in JSX/ES6 shorthand?如何在 JSX/ES6 简写中执行 if else 语句?
【发布时间】:2018-01-12 15:41:10
【问题描述】:

我的数据是这样的

{
 foo1: { name: 'Sara', rep: 'John' },
 foo2: { name: 'Bob'},
 foo3: { name: 'Mike', rep: 'Ray'}
}

如果有代表,我的目标是同时显示代表和名称,并且只显示名称

JSX 返回

 if (rep) {
   <b> {rep}(rep)</b>
     <p>{name}<p/>
   } else {
   <b>{name}</b>
  }

假设是这样的

 {rep ? <b>{rep}(rep)</b><p>{name}</p> : <b>{name}</b> }

【问题讨论】:

  • 你试过了吗?发生了什么?
  • 除了&lt;p/&gt; 应该是&lt;/p&gt;,这就是你通常看到的完成方式。

标签: javascript ecmascript-6 jsx


【解决方案1】:

你的假设很好。

你可以这样做:

{rep ?
    (
        <div>
            <b>{ rep } (rep)</b>
            <p>{ name }</p>
        </div>

    )    
: (
    <b>{ name }</b>
)}

您只能返回一个 HTML 元素,因此您需要将 bp 标记包装到 div 中。

正如@a_programmer 在 cmets 中指出的那样:“使用 react 16/fiber 您还可以使用 &lt;React.fragment&gt; 而不是 &lt;div&gt; 来保持 dom 清洁”

【讨论】:

  • 使用 react 16/fiber 你也可以使用 &lt;React.fragment&gt; 而不是 &lt;div&gt; 来保持 dom 干净
【解决方案2】:

假设您将始终拥有您可以执行以下操作的名称:

return(
  <span>
    {rep && <b>{rep}</b>}
    <p>{name}</p>
  </span>
)

如果你不这样做:

return(
  <span>
    {rep && <b>{rep}</b>}
    {name && <p>{name}</p>}
  </span>
)

【讨论】:

    猜你喜欢
    • 2016-09-15
    • 2013-08-18
    • 2012-04-09
    • 1970-01-01
    • 1970-01-01
    • 2020-01-27
    • 2017-10-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多