元素 React :React element它是 React 中最小基本单位
我们可以使用 JSX 语法轻松地创建一个 React 元素:
1 | const element = <div className="element">I'm an element</div> |
React 元素不是真实的 DOM 元素,它仅仅是 js 的普通对象(plain objects),所以也没办法直接调用 DOM 原生的 API。上面的 JSX 转译后的对象大概是这样的:
1 | { |
React 组件
React 中有三种构建组件的方式。React.createClass()、ES6 class和无状态函数。
React.createClass()
React.createClass()是三种方式中最早,兼容性最好的方法。在0.14版本前官方指定的组件写法。
1 | var Greeting = React.createClass({ |
ES6 class
ES6 class是目前官方推荐的使用方式,它使用了ES6标准语法来构建,但它的实现仍是调用React.createClass()来实现了,ES6 class的生命周期和自动绑定方式与React.createClass()略有不同。
1 | class Greeting extemds React.Component{ |
无状态函数
无状态函数是使用函数构建的无状态组件,无状态组件传入props和context两个参数,它没有state,除了render(),没有其它生命周期方法。
1 | function Greeting (props) { |
React.createClass()和ES6 class构建的组件的数据结构是类,无状态组件数据结构是函数,它们在 React 被视为是一样的。
元素与组件的区别
组件是由元素构成的。元素数据结构是普通对象,而组件数据结构是类或纯函数
属性:props 一般属性是不改变的,经常作为传入的数据.
例: 建立PropsTest组件,在网页上输出简单的 Hello, XXX, XXX为传入的属性name,当name为空时,输出Hello,World 输入为其他值时,比如:Curry,输出Hello,Curry
1 | <script type="text/babel"> |
状态:state 一般状态是不断变化的,空间内部可以控制state的变化
例: 建立StateTest组件,实现在输入框中输入数据XXX,输入Hello, XXX. XXX随着输入框的输入内容而改变.
在render方法中定义
代码如下:
1 | <script type="text/babel"> |
状态和属性的相似点:
- 是纯js对象
- 改变会触发render方法
不同点:
- 属性值可以由父类传入,状态值不能
- 属性值不在组件内部修改,而状态值就是在组件内部修改的
[参考文章:React中元素与组件的区别]
最后更新: 2018年09月09日 17:14