ToB企服应用市场:ToB评测及商务社交产业平台

标题: React 入门(超详细) [打印本页]

作者: 瑞星    时间: 2024-6-21 13:33
标题: React 入门(超详细)
前言:

   本文会引导我们进入一段 React 学习之旅。我们将逐步了解有关它的背景和用例的一些细节,在本身的电脑上建起根本的 React 工具链,创建并利用一个简单的入门应用程序,以学习一些关于 React 在此过程中如何工作的知识。
  
一、React 简介

1. 什么是 React


2. React 的特点


3. React 高效的缘故原由


4. React 官网


5. React的紧张原理



6. Facebook为什么要建造React?



二、React 的根本利用

1. 底子代码

引入js 库地点下载地点
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4.     <meta charset="UTF-8">
  5.     <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6.     <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7.     <title>Document</title>
  8. </head>
  9. <body>
  10.     <!-- 准备好一个容器 -->
  11.     <div id="test"></div>
  12.     <!-- 引入 React 核心库 -->
  13.     <script src="../js/react.development.js"></script>
  14.     <!-- 引入 react-dom 用于支持 react 操作 DOM -->
  15.     <script src="../js/react-dom.development.js"></script>
  16.     <!-- 引入babel:
  17.             1. ES6 ==> ES5
  18.             2. jsx ==> js
  19.     -->
  20.     <script src="../js/babel.min.js"></script>
  21.     <script type="text/babel">
  22.         // 1. 创建虚拟 DOM
  23.         const VDOM = <h1>Hello,React</h1>
  24.         // 2. 渲染到页面中的指定 DOM
  25.         // ReactDOM.render(虚拟DOM,真实DOM)
  26.         ReactDOM.render(VDOM,document.getElementById('test'))
  27.     </script>
  28. </body>
  29. </html>
复制代码

2. 结果


3. 相关 js 库

  1. // 引入 React核心库
  2. <script src="https://unpkg.com/react@16/umd/react.production.min.js"></script>
  3. // 引入 react-dom 用于支持 react 操作 DOM
  4. <script src="https://unpkg.com/react-dom@16/umd/react-dom.production.min.js"></script>
  5. // 引入 babel:1. ES6 ==> ES5                2. jsx ==> js
  6. <script src="https://unpkg.com/babel-standalone@6/babel.min.js"></script>
复制代码

4. 创建虚拟DOM的两种方式

  1. <script type="text/javascript">
  2.     // 1. 创建虚拟 DOM
  3.     // const VDOM = React.createElement(标签名,标签属性,标签内容)
  4.     const VDOM = React.createElement('h1', { id: 'title' }, React.createElement('span', {}, 'Hello,React'))
  5.     // 2. 渲染到 DOM
  6.     ReactDOM.render(VDOM, document.getElementById('test'))
  7. </script>
复制代码
  1. <script type="text/babel">
  2.    // 1. 创建虚拟 DOM
  3.     const VDOM = (
  4.         <h1>Hello,
  5.             <span>React</span>
  6.         </h1>
  7.     )
  8.     // 2. 渲染到页面中的指定 DOM
  9.     // ReactDOM.render(虚拟DOM,真实DOM)
  10.     ReactDOM.render(VDOM,document.getElementById('test'))
  11. </script>
复制代码

5. 虚拟DOM与真实DOM

1.React提供了一些API来创建一种 “特别” 的一般js对象

2.虚拟DOM对象终极都会被React转换为真实的DOM
3.我们编码时根本只需要操作react的虚拟DOM相关数据, react会转换为真实DOM变化而更新界。

6. 虚拟DOM与真实DOM的区别

   关于虚拟DOM:

  
  1. <script type="text/babel">
  2.     // 1. 创建虚拟 DOM
  3.     const VDOM = (
  4.         <h1>Hello,
  5.             <span>React</span>
  6.         </h1>
  7.     )
  8.     // 2. 渲染到页面中的指定 DOM
  9.     // ReactDOM.render(虚拟DOM,真实DOM)
  10.     ReactDOM.render(VDOM,document.getElementById('test'))
  11.     const TDOM = document.getElementById('demo')
  12.     // console.log(typeof VDOM) // Object
  13.     // console.log(VDOM instanceof Object) // true
  14.     console.log('虚拟DOM',VDOM)
  15.     console.log('真实DOM',TDOM)
  16.     // 调试
  17.     debugger
  18. </script>
复制代码

三、React JSX

1. 什么是 JSX



2. 渲染虚拟DOM(元素)


3. JSX 的利用

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4.     <meta charset="UTF-8">
  5.     <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6.     <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7.     <title>Document</title>
  8.     <style>
  9.         .title{
  10.             background-color: aliceblue;
  11.             width: 200px;
  12.         }
  13.     </style>
  14. </head>
  15. <body>
  16.     <!-- 准备好一个容器 -->
  17.     <div id="test"></div>
  18.     <!-- 引入 React 核心库 -->
  19.     <script src="../js/react.development.js"></script>
  20.     <!-- 引入 react-dom 用于支持 react 操作 DOM -->
  21.     <script src="../js/react-dom.development.js"></script>
  22.     <!-- 引入babel:
  23.             1. ES6 ==> ES5
  24.             2. jsx ==> js
  25.     -->
  26.     <script src="../js/babel.min.js"></script>
  27.     <script type="text/babel">
  28.         let myData = 'Student'
  29.         let myId = 'ITStudent'
  30.         // 1. 创建虚拟 DOM
  31.         const VDOM = (
  32.             <div>
  33.                 <h1 className="title" id={myId.toUpperCase()}>Hello,
  34.                     <span style={{color:'white',fontSize:'20px'}}>{myData}</span>
  35.                 </h1>
  36.                 <input type="text" />
  37.                 <Good></Good>
  38.             </div>
  39.         )
  40.         // 2. 渲染到页面中的指定 DOM
  41.         // ReactDOM.render(虚拟DOM,真实DOM)
  42.         ReactDOM.render(VDOM,document.getElementById('test'))
  43.     </script>
  44. </body>
  45. </html>
复制代码

4. JSX 的语法规则


四、模块与组件、模块化与组件化的理解

1. 模块

   什么是模块化?

  当应用的js都以模块来编写的, 这个应用就是一个模块化的应用
  
2. 组件

1.理解:用来实现局部功能结果的代码和资源的聚集(html/css/js/image等等)
2.为什么要用组件: 一个界面的功能更复杂
3.作用:复用编码, 简化项目编码, 进步运行效率
   什么是组件化?

  当应用是以多组件的方式实现, 这个应用就是一个组件化的应用
  


3. 函数式组件

  1. <script type="text/babel">
  2.     // 1. 创建函数式组件
  3.     function MyComponent(){
  4.         // 这里的this是undefined,因为babel编译,开启了严格模式
  5.         console.log(this)
  6.         // 一定需要有返回值
  7.         return <h2>我是用函数定义的组件(适用于【简单组件】的定义)</h2>
  8.     }
  9.     // 2. 渲染到页面中的指定 DOM
  10.     // ReactDOM.render(虚拟DOM,真实DOM)
  11.     ReactDOM.render(<MyComponent />,document.getElementById('test'))
  12.     /*
  13.         执行 ReactDOM.render() 方法之后,发生了什么?
  14.             1. React 解析了组件标签,找到对应的组件
  15.             2. 发现这个组件是一个函数定义的,随后调用该函数,生成了一个虚拟DOM
  16.             3. 最后将虚拟DOM转化为真实DOM,呈现在页面中;
  17.     */
  18. </script>
复制代码
  函数式组件执行过程?

    
4. 类式组件

  1. <script type="text/babel">
  2.     // 1. 创建一个类式组件
  3.     class MyComponent extends React.Component{
  4.         // render方法是放在原型上的
  5.         // render中的this是谁? -- 实例对象 <===> MyComponent组件实例对象
  6.         render(){
  7.             console.log('render中的this',this)
  8.             return <h2>我是用类定义的组件(适用于【复杂组件】的定义)</h2>
  9.         }
  10.     }
  11.     // 2. 渲染到页面中的指定 DOM
  12.     // ReactDOM.render(虚拟DOM,真实DOM)
  13.     ReactDOM.render(<MyComponent />,document.getElementById('test'))
  14.     /*
  15.         执行 ReactDOM.render() 方法之后,发生了什么?
  16.             1. React 解析了组件标签,找到对应的组件
  17.             2. 发现这个组件是一个类定义的,随后new出来一个实例对象,并通过该实例调用原型上的render方法
  18.             3. 将render()返回的内容生成了一个虚拟DOM
  19.             4. 最后将虚拟DOM转化为真实DOM,呈现在页面中;
  20.     */
  21.    let c = new MyComponent()
  22.    console.log(c)
  23. </script>
复制代码
  类式组件执行过程?

    
总结:

   欢迎各人加入我的社区,在社区中会不定时发布一些精选内容:https://bbs.csdn.net/forums/db95ba6b828b43ababd4ee5e41e8d251?category=10003
  
以上就是 React 入门(超详细),不懂得也可以在评论区里问我或私聊我询问,以后会持续发布一些新的功能,敬请关注。
我的其他文章:https://blog.csdn.net/weixin_62897746?type=blog

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4