React04-组件

44 阅读1分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 4 天,点击查看活动详情

一、基本概念

1、组件类型

(1)类式组件

 <body>
     <!-- 准备好一个“容器” -->
     <div id="test"></div>
     
     <!-- 引入react核心库 -->
     <script type="text/javascript" src="../js/react.development.js"></script>
     <!-- 引入react-dom,用于支持react操作DOM -->
     <script type="text/javascript" src="../js/react-dom.development.js"></script>
     <!-- 引入babel,用于将jsx转为js -->
     <script type="text/javascript" src="../js/babel.min.js"></script>
 ​
     <script type="text/babel">
         //1.创建类式组件
         class MyComponent extends React.Component {
             render(){
                 //render 是放在哪里的?——MyComponent的原型对象,供实例使用
                 //render 中的this是谁??——MyComponent的实例对象 <=> MyComponent组件实例对象
                 console.log('render中的this',this)
                 return <h2>我是用类定义的组件适用于(【复杂组件】的定义)</h2>
             }
         }
 ​
         ReactDOM.render(<MyComponent/>,document.getElementById('test'))
         /* 
             执行了ReactDOM.render(<MyComponent/>.......之后,发生了什么?
                 1.React解析组件标签,找到了MyComponent组件。
                 2.发现组件是使用类定义的,随后new出来该类的实例,并通过该实例调用到原型上的render方法。
                 3.将render返回的虚拟DOM转为真实DOM,随后呈现在页面中。
         */
     </script>
 </body>

执行了ReactDOM.render(.......之后,发生了什么?

1.React解析组件标签,找到了MyComponent组件。

2.发现组件是使用类定义的,随后new出来该类的实例,并通过该实例调用到原型上的render方法。

3.将render返回的虚拟DOM转为真实DOM,随后呈现在页面中。

(2)函数式组件

函数式组件首先也需要引入react的三个包和一个挂载点

     <!-- 准备好一个“容器” -->
     <div id="test"></div>
     
     <!-- 引入react核心库 -->
     <script type="text/javascript" src="../js/react.development.js"></script>
     <!-- 引入react-dom,用于支持react操作DOM -->
     <script type="text/javascript" src="../js/react-dom.development.js"></script>
     <!-- 引入babel,用于将jsx转为js -->
     <script type="text/javascript" src="../js/babel.min.js"></script>

之后才是react的代码

     <script type="text/babel">
         //1.创建函数式组件
         function MyComponent(){
             console.log(this)
             return <h2>我是用函数定义的组件(适用于【简单组件】的定义)</h2>
         } 
         ReactDOM.render(<MyComponent/>,document.getElementById('test'))
     </script>

2、细节

  1. 组件名必须首字母大写
  1. 虚拟DOM元素只能有一个根元素
  1. 虚拟DOM元素必须有结束标签