2.组件和元素

元素(element)

首先需要了解的就是React的元素,因为元素是React中最小的建造部件,你所看到的网页内容也就是由各种元素所组成的。React的元素在作用上来讲和HTML的DOM是一致的,但从本质上来看,React DOM是一种JavaScript的对象,它是通过一个树状结构的JS对象来模拟DOM树。

React DOM又称之为Virtual DOM,它在React中的作用很大。我们都知道React很快,很轻。而它之所以如此的原因便在于Virtual DOM。在React DOM内部会进行一套高效率的Diff算法,在应用的数据改变之后,React会尽力少地比较,然后根据虚拟DOM只改变真实DOM中需要被改变的部分。React也藉此实现了它的高效率,高性能。除此之外,react DOM还有其他的一些作用,独立分离出来的一层逻辑层,为react涉足于其他的领域提供了支持(譬如ReactNative,ReactVR 等)

React元素是不能突变的,也就是说不能更改它的子元素和任何属性,它的每一个元素都像电影里面的一频。更新 UI 的唯一方法是创建一个新的元素,并将其传入ReactDOM.render()方法。

组件

组件在官方文档的解释是:是指在UI界面中,可以被独立划分的、可复用的、独立的模块。

React 组件非常简单。我们可以认为它们就是简单的函数,接受 props 和 state (后面会讨论) 作为参数,然后渲染出 HTML。其实就类似于JS当中对function函数的定义,它一般会接收一个名为props的输入,然后返回相应的React元素,再交给ReactDOM,最后渲染到屏幕上。

最简单的创建一个组件的方法就是直接创建一个函数:

// 普通函数式
function Welcome(props) {
  return <h1>Hello, {props.name}</h1>;
}

// 箭头函数式
const Title = props => <h1>Hello, {props.name}</h1>

上面的写法被称之为函数式组件。同样的,我们也可以使用ES6中的class语法来定义一个组件:

class Welcome extends React.Component {
    render() {
    return <h1>Hello,{this.props.name}</h1>;
    }
}

而组件在定义好之后,可以通过JSX描述的方式被引用,组件之间也可以相互嵌套和组合。
有一个需要注意的是:组件名称总是以大写字母开始。
举例来说, <button />代表一个 DOM 标签,而 <Welcome /> 则代表一个组件,并且需要在作用域中有一个 Welcome组件。)

而 React 当中的组件是通过嵌套或组合的方式来实现组件代码复用的。通过
props传值和组合使用组件几乎可以满足所有场景下的需求。而这种方法也更符合组件化的思想。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 3. JSX JSX是对JavaScript语言的一个扩展语法, 用于生产React“元素”,建议在描述UI的时候...
    pixels阅读 2,873评论 0 24
  • HTML模版 之后出现的React代码嵌套入模版中。 1. Hello world 这段代码将一个一级标题插入到指...
    ryanho84阅读 6,280评论 0 9
  • 原教程内容详见精益 React 学习指南,这只是我在学习过程中的一些阅读笔记,个人觉得该教程讲解深入浅出,比目前大...
    leonaxiong阅读 2,858评论 1 18
  • 看门人很安静。没有人靠近的时候,他总是安静。他不会自言自语,也不会唱歌。他喜欢这样坐在一张板凳上,一动也不动,就像...
    泥藏风阅读 274评论 0 0
  • 早晨引导术 站桩后 还是精神抖擞 干脆又做一遍肩颈 练一遍跳跃 午睡没睡醒还是咋地 下午又累又困 准备睡觉
    了了妈2017阅读 102评论 0 4