在使用ReactJS和JSX时,我们可以编写简单的JS代码以某种方式返回某些元素吗?

非极性

当我们在JSX中返回某些内容时,我们可以这样写:

  <ul>
    {Array.from({ length: 9 }).map((e, i) => (
      <li>{i}</li>
    ))}
  </ul>

或使用IIFE:

  <ul>
    {(function () {
      const result = [];
      for (let i = 0; i < 9; i++) {
        result.push(<li>{i}</li>);
      }
      return result;
    })()}
  </ul>

示例:https//codesandbox.io/s/busy-aryabhata-egv27

但是是否可以编写如下内容:

  <ul>
    {
      const result = [];
      for (let i = 0; i < 9; i++) {
        result.push(<li>{i}</li>);
      }
      return result;  // somehow "return" the array
    }
  </ul>

就是说,只编写没有IIFE的纯代码,并能够以某种方式返回我们创建的数组?

尼古拉斯塔

您可以将for循环拉到JSX之上,如下所示:

const result = [];
for (let i = 0; i < 9; i++) {
  result.push(<li>{i}</li>);
}

return (
  <ul>
    {result}
  </ul>
)

但是,如果您想将此代码嵌入JSX内,则只能使用表达式,而不能使用语句。这就是您在第二个示例中使用IIFE的原因:它是一个表达式,因此您可以将其放入JSX中,但是它可以包含语句,因此让您有点作弊。

记住JSX被转换为一个函数调用(或一系列调用)可能会有所帮助。例如,这:

<ul>{something}</ul>

变成这个:

React.createElement("ul", null, something);

查看该函数版本,显然以下代码不是合法语法:

React.createElement(
  "ul",
  null,
  const result = [];
  for (let i = 0; i < 9; i++) {
    result.push(<li>{i}</li>);
  }
  return result;
)

这就是JSX也不允许您这样做的原因。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

当使用ReactJS和JSX时,我们可以编写普通的JS代码以某种方式返回某些元素吗?

来自分类Dev

我们可以在SQL Server中编写外键时使用CAST函数吗

来自分类Dev

我们可以这样使用分组方式吗?

来自分类Dev

我们可以在amCharts上使用reactJS吗

来自分类Dev

我们可以使用“spring-boot-starter-parent”编写简单的启动应用程序吗

来自分类Dev

我们可以在Python中使用C代码吗?

来自分类Dev

我们可以使用简单的javascript,DOM和CSS在svg元素的鼠标悬停上创建div以具有多行工具提示吗?

来自分类Dev

我们可以使用尾随返回类型语法编写构造函数/析构函数吗?

来自分类Dev

当我们在Chrome中测试webrtc时,它使用的是用Android编写的本机代码和jni代码

来自分类Dev

我们可以在Java程序中编写Scala代码吗?

来自分类Dev

我们可以编写一个以元素为参数并返回结果的泛型方法吗?(例如返回 isDisplayed() 函数结果的方法)?

来自分类Dev

我们可以通过提取模态所需的 javascript 和 css 并将其保留在我们的代码本地来使用引导模态吗?

来自分类Dev

我们可以改进我的代码以交换Scala中的相邻数组元素吗?

来自分类Dev

我们可以改善我的代码以交换Scala中的相邻数组元素吗?

来自分类Dev

当编写“最频繁值”的模板算法时,我们可以作为“ NaN”返回什么?

来自分类Dev

我们可以不使用c程序和某种编码技术来访问c中变量的存储位置以及程序中的值吗?

来自分类Dev

我们可以编写没有ItemReader和ItemWriter的Spring Batch作业吗

来自分类Dev

我们可以一起编写mongodb crud查询和聚合查询吗?

来自分类Dev

我们可以编写Visual Studio Code扩展吗?

来自分类Dev

我们可以不用javascript编写IF语句吗

来自分类Dev

我可以用更好的方式编写简单的Python代码吗?

来自分类Dev

我们可以确定php中数组元素的返回类型吗?

来自分类Dev

我们可以使用junit编写功能测试吗?

来自分类Dev

我们可以编写自定义检查以使用Data Dog监视过程吗

来自分类Dev

我们可以使用JAVA触发的队列编写Azure Webjobs吗

来自分类Dev

我们可以以编程方式缓存Google地图吗?

来自分类Dev

我们每次使用Python编写文件时都需要打开excel文件吗?

来自分类Dev

我们可以读取和编程AMD处理器的微代码吗?

来自分类Dev

我们可以使用休眠方式连接到LDAP吗

Related 相关文章

  1. 1

    当使用ReactJS和JSX时,我们可以编写普通的JS代码以某种方式返回某些元素吗?

  2. 2

    我们可以在SQL Server中编写外键时使用CAST函数吗

  3. 3

    我们可以这样使用分组方式吗?

  4. 4

    我们可以在amCharts上使用reactJS吗

  5. 5

    我们可以使用“spring-boot-starter-parent”编写简单的启动应用程序吗

  6. 6

    我们可以在Python中使用C代码吗?

  7. 7

    我们可以使用简单的javascript,DOM和CSS在svg元素的鼠标悬停上创建div以具有多行工具提示吗?

  8. 8

    我们可以使用尾随返回类型语法编写构造函数/析构函数吗?

  9. 9

    当我们在Chrome中测试webrtc时,它使用的是用Android编写的本机代码和jni代码

  10. 10

    我们可以在Java程序中编写Scala代码吗?

  11. 11

    我们可以编写一个以元素为参数并返回结果的泛型方法吗?(例如返回 isDisplayed() 函数结果的方法)?

  12. 12

    我们可以通过提取模态所需的 javascript 和 css 并将其保留在我们的代码本地来使用引导模态吗?

  13. 13

    我们可以改进我的代码以交换Scala中的相邻数组元素吗?

  14. 14

    我们可以改善我的代码以交换Scala中的相邻数组元素吗?

  15. 15

    当编写“最频繁值”的模板算法时,我们可以作为“ NaN”返回什么?

  16. 16

    我们可以不使用c程序和某种编码技术来访问c中变量的存储位置以及程序中的值吗?

  17. 17

    我们可以编写没有ItemReader和ItemWriter的Spring Batch作业吗

  18. 18

    我们可以一起编写mongodb crud查询和聚合查询吗?

  19. 19

    我们可以编写Visual Studio Code扩展吗?

  20. 20

    我们可以不用javascript编写IF语句吗

  21. 21

    我可以用更好的方式编写简单的Python代码吗?

  22. 22

    我们可以确定php中数组元素的返回类型吗?

  23. 23

    我们可以使用junit编写功能测试吗?

  24. 24

    我们可以编写自定义检查以使用Data Dog监视过程吗

  25. 25

    我们可以使用JAVA触发的队列编写Azure Webjobs吗

  26. 26

    我们可以以编程方式缓存Google地图吗?

  27. 27

    我们每次使用Python编写文件时都需要打开excel文件吗?

  28. 28

    我们可以读取和编程AMD处理器的微代码吗?

  29. 29

    我们可以使用休眠方式连接到LDAP吗

热门标签

归档