Render---element是什么

203 阅读1分钟

上篇我们说到React组件的render函数实际上是调用了 ReactElement.createElement方法。而ReactElement.createElement方法最终是调用了 ReactElement函数,而后 ReactElement函数返回了一个element。

element 是什么。

    '
        如下便是一个element。根据createElement方法我们最终生成的element如下,简单的饿来说,一个element就是描述我们的React组件的一个js对象,这个js对象有以下一些属性,我们一个个的来看看。
    '
    {   
        '
            ?typeof是React的一个内部的标识,表示当前对象是一个ReactElement,如果当前环境支撑symbol,那么该属性的值会是一个symbol,如果不支持,那么该值会是'0xeac7',这里说一下 之所以会是 数字 0xeac7 是因为开发者认为这个数字很像  React
            ?😂、果然大神的思维真实捉摸不定。
        '
        $$typeof: Symbol(react.element)
        '
            type属性是一个html标签或者是React组件名称
        '
        type: "div"
        '
            key也就是我们用来提升组件渲染性能的标识
        '
        key: null
        '
            是DOM的引用
        '
        ref: null
        '
            props里是该组件用到的所有的属性,比如,事件,比如children。children包含的是组件包含的子组件信息,这些子组件可能是一个字符串,也可能是一个组件,如果是一个组件,那就会形成循环嵌套。
        '
        props:[
            onClick: ƒ ()
            children: (5) ["   ", {…}, "Hello World!", 1, {…}]
        ]
        '
            创造这个element对象的组件。就是用哪个组件创建了这个element对象。
        '
        _owner:{
            ReactCompositeComponentWrapper {_currentElement: {…}, _rootNodeID: ".0", _instance: App, _pendingElement: null, _pendingStateQueue: null, …
        }
    }

一个组件在React中的样子一直就是 一个 element.