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

javascript - React官网示例中,关于遍历渲染的部分,这个怎么理解呢?

宋勇
2024-05-07

React的官网示例,有不明白的地方请教各位,希望能得到解惑。

const people = [  '凯瑟琳·约翰逊: 数学家',  '马里奥·莫利纳: 化学家',  '穆罕默德·阿卜杜勒·萨拉姆: 物理学家',  '珀西·莱温·朱利亚: 化学家',  '苏布拉马尼扬·钱德拉塞卡: 天体物理学家',];export default function List() {  const listItems = people.map(person =>    <li>{person}</li>  );  return <ul>{listItems}</ul>;}

官网地址:https://react.docschina.org/learn/rendering-lists
问题1:{listItems}如果listItems是一个函数,我还能理解,可是这是个变量,看起来有点像数组变量,又有点不像,没有返回值啊。难道{}这个大括号就能输出自动遍历数组了?
问题2:<li>{person}</li>,为什么前面没有return,也没有大括号包裹。
这种jsx语法看上去有点像js,但是又有点离谱。

尝试搜索很多资料了

共有3个答案

谷梁波
2024-05-07

{}中的变量支持下面的类型

type ReactNode =        | ReactElement        | string        | number        | Iterable<ReactNode>        | ReactPortal        | boolean        | null        | undefined        | DO_NOT_USE_OR_YOU_WILL_BE_FIRED_EXPERIMENTAL_REACT_NODES[            keyof DO_NOT_USE_OR_YOU_WILL_BE_FIRED_EXPERIMENTAL_REACT_NODES        ];
太叔昊苍
2024-05-07

你的那个文档 在往下看看呢
return 只是被省略了 并不是没有
image.png

慕高阳
2024-05-07

问题1:{listItems} 并不是直接输出数组,而是将数组中的每个元素作为子元素传递给 <ul> 组件。在 React 中,当你尝试将一个数组(或其他可迭代对象)作为子元素传递给一个组件时,React 会自动遍历这个数组,并为每个元素创建一个新的子组件。这就是所谓的“隐式映射”(implicit mapping)。所以,{listItems} 实际上是在告诉 React:“请为 listItems 数组中的每个元素创建一个 <li> 元素”。

问题2:在 JSX 语法中,当箭头函数的主体只有一个表达式时,你可以省略大括号和 return 关键字。这是 ES6(ECMAScript 2015)中的一个特性,被称为“箭头函数表达式简写”(arrow function expression shorthand)。因此,<li>{person}</li> 等价于 <li>{() => person}</li>,但由于函数体只有一个表达式 person,所以可以简写为 <li>{person}</li>

JSX 语法是 React 的一种语法扩展,它看起来像是 HTML,但实际上是 JavaScript。JSX 允许你在 JavaScript 代码中写 HTML 标记,这使得组件的渲染更加直观和易读。然而,JSX 并不是必需的;你也可以完全使用普通的 JavaScript 函数和对象来创建 React 组件。但是,使用 JSX 通常会使代码更加简洁和易于理解。

总的来说,React 通过其组件化和声明式编程模型,使得处理列表渲染这类任务变得非常直观和简单。你只需要定义好数据(在这个例子中是 people 数组)和渲染逻辑(在这个例子中是 List 组件),React 就会负责高效地更新和渲染 UI。

 类似资料:
  • 请问下为什么renderDom能正常渲染renderComDom却渲染不出来?

  • 本文向大家介绍react怎么提高列表渲染的性能?相关面试题,主要包含被问及react怎么提高列表渲染的性能?时的应答技巧和注意事项,需要的朋友参考一下 使用webpack 做代码分割。 使用hooks。

  • 不使用递归的方式怎么渲染这种树结构 希望能得到这样的结构

  • 数组(座位图)如何遍历?中间要留一个空的过道(div),html部分怎么写?求大佬指导? 后台返回的接口数据 我想要的结果效果图

  • 本文向大家介绍react中怎样阻止组件渲染?相关面试题,主要包含被问及react中怎样阻止组件渲染?时的应答技巧和注意事项,需要的朋友参考一下 在极少数情况下,你可能希望能隐藏组件,即使它已经被其他组件渲染。若要完成此操作,你可以让  方法直接返回 ,而不进行任何渲染。

  • 本文向大家介绍Javascript遍历table中的元素示例代码,包括了Javascript遍历table中的元素示例代码的使用技巧和注意事项,需要的朋友参考一下 例如: 而在JS中如何遍历赋值呢? 程序代码 看到另一种用dom的方式 (但是自己试没有试出来,不知是什么原因)

  • 问题内容: 我本人已将OBJ解析器/导入器支持添加到我一直在努力的3D渲染引擎中。我遵循的规范发现这里几乎是“三通”,但当前的例外是将所有支持限制为组,面,顶点,法线和纹理坐标(因此,到目前为止还没有材料库或自由形式的多边形支持) 。我的目标是简单地逐行解析-随着我的进行,生成一个面向对象的,分层的树状场景图- 并允许开发人员通过很少的手动调用将数据自动绑定到着色器程序,以便开始操作和查看网格。最

  • 本文向大家介绍说说你对React的渲染原理的理解相关面试题,主要包含被问及说说你对React的渲染原理的理解时的应答技巧和注意事项,需要的朋友参考一下 这个问题我感觉可能描述的不全面,先讲一下我的描述吧: 1.单向数据流。React是一个MVVM框架,简单来说是在MVC的模式下在前端部分拆分出数据层和视图层。单向数据流指的是只能由数据层的变化去影响视图层的变化,而不能反过来(除非双向绑定) 2.数