返回顶部
首页 > 资讯 > 精选 >react element指的是什么
  • 847
分享到

react element指的是什么

2023-07-05 00:07:48 847人浏览 泡泡鱼
摘要

本篇内容介绍了“React element指的是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!react element是“React.

本篇内容介绍了“React element指的是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

react element是“React.createElement”函数的返回值,即ReactElement;ReactElement的结构是“const element = {Element    $$typeof: REACT_ELEMENT_TYPE,key: key,ref: ref,props: props,_owner: owner, };”。

React源码 | ReactElement

说到ReactElement,不得不提到的就是在React中,用来替代javascriptjs)的语言,JSX。

JSX

作为React的官方指定语法,JSX允许用户在JS代码中插入html代码。但是,这种写法浏览器是无法解析的。他们需要一个转换器,Babel就充当了这样一个角色,他在JSX代码编译时候将其转换成JS文件,这样浏览器就能解析了。

怎么转换呢,我们知道,JSX有JS和HTMl两种写法,本身就是JS写法的其实是不需要转换的,当然也不能说的这么绝对,有时候Babel会为了兼容性的缘故将高版本的语法翻译到低版本,这部分不在讨论范围。我们要关注的其实是HTMl的处理方式。

比如下面这行代码:

<div id='name'>Tom and Jerry</div>

通过Babel转换后生成的代码是:

React.createElement("div", {
   id: "name"}, "Tom and Jerry");

HTML语法转变成了JS语法,简单来说,我们所写的JSX最终变成了JS。

我们写一个复杂点的例子:

<div class='wrapper' id='id_wrapper'>
   <span>Tom</span>
   <span>Jerry</span></div>React.createElement("div", {
   class: "wrapper",
   id: "id_wrapper"
}, React.createElement("span", null, "Tom"), React.createElement("span", null, "Jerry"));

转换规则是比较简单的,React.createElement的第一个参数是节点类型;第二个参数是该节点的属性,以key:value的形式作为一个对象,后面的所有参数都是该节点的子节点。

需要注意的是,在JSX语法中,我们不仅有原生的HTML节点,还有大量的自定义组件,比如:

function Comp() {
   return '<div>Tom and Jerry</div>'
}

<Comp></Comp>
function Comp() {
   return '<div>Tom and Jerry</div>';
}

React.createElement(Comp, null);

可以看出,React.createElement的第一个参数变成了一个变量,而不是一个字符串,尝试将函数Comp首字母小写:

function comp() {
   return '<div>Tom and Jerry</div>'
}

<comp></comp>
function comp() {
   return '<div>Tom and Jerry</div>';
}

React.createElement("comp", null);

React.createElement的第一个参数又变成了一个字符串。
这也就是我们在React中写组件的时候,为什么会要求首字母大写的原因,Babel在编译的时候会将首字母小写的组件视为原生的HTMl节点进行处理,如果我们将自定义组件首字母小写,后续的程序将无法识别这个组件,最终会报错。

ReactElement

通过Babel编译后的JS代码,频繁出现React.createElement这个函数。这个函数的返回值就是ReactElement,通过上面的示例可以看出,React.createElement函数的入参有三个,或者说三类。

  • type  
    type指代这个ReactElement的类型。  

    • 字符串比如div,p代表原生DOM,称为HostComponent

    • Class类型是我们继承自Component或者PureComponent的组件,称为ClassComponent

    • 方法就是functional Component

    • 原生提供的Fragment、AsyncMode等是Symbol,会被特殊处理

  • config  
    参照上面Babel编译后的代码,所有节点的属性都会以Key:Value的形式放到config对象中。

  • children
    子节点不止会有一个,所以children不只有一个,从第二个参数以后的所有参数都是children,它是一个数组

ReactElement的结构是这样的

const element = {
   // This tag allows us to uniquely identify this as a React Element    $$typeof: REACT_ELEMENT_TYPE,

   // Built-in properties that belong on the element    type: type,
   key: key,
   ref: ref,
   props: props,

   // Record the component responsible for creating this element.    _owner: owner,
 };

它就是一个简单的对象,为了看清楚这个对象的创建规则,我们举个例子。 首先是我们写的JSX:

<div class='class_name' id='id_name' key='key_name' ref='ref_name'>
   <span>Tom</span>
   <span>Jerry</span>
</div>

它会被Babel编译为:

React.createElement("div", {
   class: "class_name",
   id: "id_name",
   key: "key_name",
   ref: "ref_name"}, React.createElement("span", null, "Tom"), React.createElement("span", null, "Jerry"));

它会生成这样一个Element

{
   $$typeof: REACT_ELEMENT_TYPE,
   type:'div',
   key: 'key_name',
   ref: "ref_name",
   props: {
       class: "class_name",
       id: "id_name",
       children: [
           React.createElement("span", null, "Tom"),
           React.createElement("span", null, "Jerry")
       ]
   }
    _owner: ReactCurrentOwner.current,}
  • $$typeof 是一个常量,所有通过React.createElement生成的元素都有这个值。一般使用 React 的组件都是挂到父组件的 this.props.children 上面,但是也有例外,比如要实现一个模态框,就需要将模态框挂载到body节点下,这个时候需要使用ReactDOM.createPortals(child, container)这个函数实现,这个函数生成的$$typeof值就是REACT_PORTAL_TYPE。

  • type指代这个ReactElement的类型

  • key和ref都是从config对象中找到的特殊配置,将其单独抽取出来,放在ReactElement下

  • props包含了两部分,第一部分是去除了key和ref的config,第二部分是children数组,数组的成员也是通过React.createElement生成的对象,示例中省略了这个步骤。

  • _owner在16.7的版本上是Fiber,Fiber是react16+版本的核心,暂时不做深究。

“react element指的是什么”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

--结束END--

本文标题: react element指的是什么

本文链接: https://lsjlt.com/news/348627.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • react element指的是什么
    本篇内容介绍了“react element指的是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!react element是“React....
    99+
    2023-07-05
  • react element的概念是什么
    本篇文章和大家了解一下react element的概念是什么。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。 在react中,element是最小的构建单元,是...
    99+
    2024-04-02
  • element是指什么
    元素的具体含义取决于上下文和数据结构的类型。在数组中,元素是按照顺序排列的,并且可以通过索引访问;在列表中,元素可以是有序的或无序的,并且可以通过位置或值进行访问;在集合中,元素是唯一的,并且可以进行添加、删除和查找操作;在树中,元素可以是...
    99+
    2023-08-15
  • react-native-cli指的是什么
    本文小编为大家详细介绍“react-native-cli指的是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“react-native-cli指的是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深...
    99+
    2024-04-02
  • react指的是什么框架
    本文将为大家详细介绍“react指的是什么框架”,内容步骤清晰详细,细节处理妥当,而小编每天都会更新不同的知识点,希望这篇“react指的是什么框架”能够给你意想不到的收获,请大家跟着小编的思路慢慢深入,具体内容如下,一起去收获新知识吧。r...
    99+
    2023-06-06
  • react柯里化指的是什么
    这篇文章主要介绍了react柯里化指的是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇react柯里化指的是什么文章都会有所收获,下面我们一起来看看吧。 ...
    99+
    2024-04-02
  • react三个点指的是什么
    本篇内容介绍了“react三个点指的是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!react的三个点代表“延展操作符”;在React中...
    99+
    2023-07-04
  • react高阶组件指的是什么
    这篇文章主要介绍了react高阶组件指的是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇react高阶组件指的是什么文章都会有所收获,下面我们一起来看看吧。 ...
    99+
    2024-04-02
  • react中ssr项目指的是什么
    这篇文章主要介绍“react中ssr项目指的是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“react中ssr项目指的是什么”文章能帮助大家解决问题。 ...
    99+
    2024-04-02
  • react父子组件指的是什么
    这篇文章主要介绍了react父子组件指的是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇react父子组件指的是什么文章都会有所收获,下面我们一起来看看吧。 ...
    99+
    2024-04-02
  • react条件渲染指的是什么
    这篇文章主要介绍“react条件渲染指的是什么”,在日常操作中,相信很多人在react条件渲染指的是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”react条件渲染指的是...
    99+
    2024-04-02
  • react受控组件指的是什么
    这篇文章主要介绍“react受控组件指的是什么”,在日常操作中,相信很多人在react受控组件指的是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”react受控组件指的是...
    99+
    2024-04-02
  • react中受控组件指的是什么
    本文小编为大家详细介绍“react中受控组件指的是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“react中受控组件指的是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。...
    99+
    2024-04-02
  • react非受控组件指的是什么
    这篇文章主要介绍“react非受控组件指的是什么”,在日常操作中,相信很多人在react非受控组件指的是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”react非受控组件...
    99+
    2024-04-02
  • React的Hook是什么
    这篇文章主要介绍了React的Hook是什么,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。State Hook这个例子用来显示一个计数器。当你点击按钮,计数器的值就会增加:i...
    99+
    2023-06-29
  • react的component是什么
    本教程操作环境:Windows7系统、react18版、Dell G3电脑。在React,组件(component),就是一个UI的单元,是封装起来的具有独立功能的UI部件。它的思想是,将要展示的内容,分成多个独立部分,每一个这样的部分,就...
    99+
    2023-05-14
    组件 component React
  • 什么是react
    本篇文章为大家展示了什么是react,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。react算是目前最火的js MVC框架。一、React基础1.React 虚拟D...
    99+
    2024-04-02
  • React项目使用Element的步骤是怎样的
    本篇文章给大家分享的是有关React项目使用Element的步骤是怎样的,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。初次在react项目中使用element框架,碰到了一些很...
    99+
    2023-06-25
  • React组件里this指向了undefined的原理是什么
    这篇文章主要介绍“React组件里this指向了undefined的原理是什么”,在日常操作中,相信很多人在React组件里this指向了undefined的原理是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家...
    99+
    2023-07-05
  • Flutter Element概念是什么
    本文小编为大家详细介绍“Flutter Element概念是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“Flutter Element概念是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知...
    99+
    2023-07-06
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作