当前位置: 首页 > 知识库问答 >
问题:

在这段代码中,这些偏执是必要的吗?

车明贤
2023-03-14

我大致了解ES6函数箭头的工作原理。我也明白有时括号可以用来隐式返回对象。但是,就React/JSX而言,下面的括号是必要的吗?

class Contactlist extends React.Component {

    render() {

    const people = [
      { name: 'Tyler' },
      { name: 'Karen' },
      { name: 'Richard' }
    ]

    return <ol>
      { 
        people.map(
            // are the parentheses necessary here??
            person => (<li key={person.name}>{person.name}</li>)
        )
      }
    </ol>

    }
}

还是可以简单地执行以下操作?

...
return <ol>
  {
      people.map(
          person => <li key={person.name}>{person.name}</li>
      )
  }
</ol>
...

所以,我想我真正应该问的是jsx元素是否被视为js对象。如果是这样的话,那么括号可能是用来从fat-arrow函数隐式返回它们的。

共有1个答案

赫连瀚
2023-03-14

这种情况不使用括号是绝对可以的。

return <ol>
  {
      people.map(
          person => <li key={person.name}>{person.name}</li>
      )
  }
</ol>

一个好的做法是仅在多行JSX周围使用括号。所以在您的例子中,您需要将JSX包装在圆括号内的return中,并且可以跳过将JSX包装在圆括号内的map函数。

return (
    <ol>
        {
            people.map(
               person => <li key={person.name}>{person.name}</li>
            )
        }
    </ol>
);
 类似资料:
  • 问题内容: 我有一段我想缩短的代码… 我一次又一次地添加新的标志权限感到非常恼火,我需要做几次,是否有一个较短的方法可以将所有标志放在同一个定义中? 让我这样说吧,我可以这样做吗?(当然这会产生错误,但是类似。) 问题答案: 如果与C#的语法相同,并且标志设置正确,则可以执行以下操作:

  • 问题内容: 此代码来自Python的文档。我有点困惑。 以下是我最初的想法: 为什么这段代码会创建一个无限循环,而第一个却没有呢? 问题答案: 这是陷阱之一!python,可以逃脱初学者。 这是这里的魔术酱。 观察: 现在没有: 这里要注意的主要事情是返回现有列表的a,因此您要遍历未修改的副本。 您可以使用以下命令检查是否引用了相同的列表: 在第一种情况下: 在第二种情况下: 值得注意的是,它称为

  • 问题内容: 我有大约五种这样的方法,但是由于seriesColors是静态的,所以想知道上面的代码是否会导致内存泄漏。 如果存在内存泄漏,那么该如何解决? 在这两个代码中,哪一个存在严重缺陷? 问题答案: 静态变量在类的所有实例之间共享。(使用“ new”运算符创建一个实例。) 在这些示例中;使用静态(实例变量)存储颜色可能不是一个好主意,因为实例之间会相互干扰。该变量应更改为“普通”实例变量。

  • 在方法或类范围内,下面的行编译(带有警告): 在类作用域中,变量获取其默认值,以下给出未定义引用错误: 这难道不是第一个应该以相同的未定义引用错误结束吗?或者第二行应该编译?或者我错过了什么?

  • 我发现了一个很受欢迎的问题的答案,下面的代码是: 为什么...是必需的?如果我省略了,巴别就会对我抱怨说: 它看起来像扩展语法,但是一个布尔值。我找不到能解释到底发生了什么的医生。