创建React组件的两种方式:函数式组件和类组件

时间:2023-02-01 17:39:26 类型:React
字号:    
//1. 创建函数式组件(代码和资源的集合)
        function MyComponent(){ //注意: 首字母必须大写
            console.log(this); //此处的this是undefined, 因为babel编译后开启了严格模式
            return <h1>函数式组件编程, 适合简单的组件编程</h1>
        }
        //2. 渲染组件到页面
        ReactDOM.render(<MyComponent/>,document.getElementById("test"));
        /*
            执行了ReactDOM.render(<MyComponent/>,document.getElementById("test"));...之后,发生了什么
            1. React解析组件标签, 找到了MyComponent组件
            2. 发现组件是使用函数定义的, 随后调用该函数,将返回的虚拟DOM转为真实DOM,随后呈现在页面中
        */
  //2. 创建类式组件
        class MyComponent extends React.Component{
            //render是放在哪里的?-- 类MyComponent的原型对象上,供实例使用
            render(h) {
                //render中的this是谁?--MyComponent实例对象//MyComponent组件实例对象
                console.log("render中的this",this);//MyComponent{}
                return <h2>我是用类定义的组件(适用于复杂组件的定义)</h2>
            }
        }
        ReactDOM.render(<MyComponent/>,document.getElementById("test"))
        /*
            执行了ReactDOM.render(<MyComponent/>,document.getElementById("test"));...之后,发生了什么
            1. React解析组件标签, 找到了MyComponent组件
            2. 发现组件是使用类定义的, 随后new出来该类的实例,并通过该实例调用到原型上的render()方法
            3. 将render返回的虚拟dom转换为真实dom,随后呈现在页面中

        */
        //React 元素也可以是用户自定义的组件:
        const element = <Welcome name="Sara" />;
const element = <Welcome name="Sara" />;


<