反应中元素和组件有哪些区别

  介绍

了解反应中元素和组件有哪些区别?这个问题可能是我们日常学习或工作经常见到的。希望通过这个问题能让你收获颇深。下面是小编给大家带来的参考内容,让我们一起来看看吧!

反应中元素和组件的区别:1元素数据结构是普通对象,而组件数据结构是类或纯函数;2、在JSX中,被元素嵌套的元素会以属性儿童的方式传入该元素的组件。

<强>反应中元素和组件的区别:

<强> 1,反应元素

元反应素(元素)的反应,它是反应中最小基本单位,我们可以使用JSX语法轻松地创建一个反应元素:

=& lt;常量元素div className=癳lement"在我# 39;m element

元反应素不是真实的DOM元素,它仅仅是js的普通对象(普通对象),所以也没办法直接调用DOM原生的API。上面的JSX转译后的对象大概是这样的:

{   _context:对象,   _owner:空,   关键:空,   道具:{   名称:& # 39;元素# 39;   孩子们:& # 39;我# 39;m元素# 39;   },   裁判:空,   类型:“div"   }

只有在这个元素渲染被完成后,才能通过选择器的方式获取它对应的DOM元素,不过,按照反应有限状态机的设计思想,应该使用状态和属性来表述组件,要尽量避免DOM操作,即便要进行DOM操作,也应该使用反应提供的接口ref和<代码> getDOMNode()>

除了使用JSX语法,我们还可以使用<代码> React.createElement() 和<代码> React.cloneElement() 来构建元反应素。

<强> React.createElement()

JSX语法就是用<代码> React.createElement() 来构建元反应素的。它接受三个参数,第一个参数可以是一个标签名。如div,跨度,或者反应组件。第二个参数为传入的属性。第三个以及之后的参数,皆作为组件的子组件。

React.createElement (   类型,   (道具)   (孩子……)   )

<>强React.cloneElement()

React.cloneElement()与React.createElement()相似,不同的是它传入的第一个参数是一个反应元素,而不是标签名或组件。新添加的属性会并入原有的属性,传入到返回的新元素中,而就的子元素奖杯替换。

React.cloneElement (   元素,   (道具)   (孩子……)   )

<强> 2,反应组件

反应中有三种构建组件的方式.React.createClass (), ES6类和无状态函数。

React.createClass ()

React.createClass()是三种方式中最早,兼容性最好的方法。在0.14版本前官方指定的组件写法。

var问候=React.createClass ({   呈现:函数(){   返回& lt; h2>你好,{this.props.name} & lt;/h2>;   }   });

<强> ES6类

ES6类是目前官方推荐的使用方式,它使用了ES6标准语法来构建,但它的实现仍是调用<代码> React.createClass() 来实现了,ES6类的生命周期和自动绑定方式与React.createClass()略有不同。

类问候extemds React.Component {   呈现:函数(){   返回& lt; h2>你好,{this.props.name} & lt;/h2>;   }   };

<强>无状态函数

无状态函数是使用函数构建的无状态组件,无状态组件传入的道具和背景两个参数,它没有状态,除了渲染(),没有其它生命周期方法。

函数问候(道具){   返回& lt; h2>你好,{props.name} & lt;/h2>;   }

React.createClass()和ES6类构建的组件的数据结构是类,无状态组件数据结构是函数,它们在反应被视为是一样的。

<强> 3元素与组件的区别

组件是由元素构成的。元素数据结构是普通对象,而组件数据结构是类或纯函数。除此之外,还有几点区别要注意:

<强> this.props。孩子

在JSX中,被元素嵌套的元素会以属性儿童的方式传入该元素的组件。当仅嵌套一个元素时,孩子是一个反应元素,当嵌套多个元素时,孩子是一个元反应素的数组。可以直接把孩子写入JSX的中,但如果要给它们传入新属性,就要用到<代码> React.cloneElement() 来构建新的元素。我曾放过以下错误:

渲染(){   var=this.props.children孩子   返回& lt; div> & lt;孩子提示={& # 39;错误! & # 39;}/祝辞& lt; div>   }

反应中元素和组件有哪些区别