美文网首页
2.组件和元素

2.组件和元素

作者: Srtian | 来源:发表于2018-02-11 12:11 被阅读6次

    元素(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传值和组合使用组件几乎可以满足所有场景下的需求。而这种方法也更符合组件化的思想。

    相关文章

      网友评论

          本文标题:2.组件和元素

          本文链接:https://www.haomeiwen.com/subject/wvpktftx.html