React 超详细入门教程

这篇具有很好参考价值的文章主要介绍了React 超详细入门教程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一,React简介

1.什么是React

  1. React 是一个用于构建用户界面的 JavaScript 库,主要用于构建 UI,而不是一个 MVC 框架,但可以使用 React 作为 MVC 架构的 View 层轻易的在已有项目中使用,它是一个用于构建用户界面的 JavaScript 库,起源于 Facebook 的内部项目,用来架设 Instagram 的网站,于 2013 年 5 月开源。
  2. React 是用于动态构建用户界面的 JavaScript 库(只关注于视图)。React 拥有较高的性能,代码逻辑非常简单,越来越多的人已开始关注和使用它。

2.React工作原理

  1. React 在内存中创建一个虚拟 DOM。
  2. React 不是直接操作浏览器的 DOM,而是在内存中创建一个虚拟 DOM,在对浏览器 DOM 进行更改之前,它会在其中执行所有必要的操作。
  3. React 只改变需要改变的地方!
  4. React 找出已经进行了哪些更改,并只更改需要更改的内容。

3.React历史

React.JS 的当前版本是 V18.0.0(2022 年 4 月)。
首次向公众发布 (V0.3.0) 于 2013 年 7 月。
React.JS 于 2011 年首次用于 Facebook 的 Newsfeed 功能。
Facebook 软件工程师 Jordan Walke 创建了它。


4.React的特点

  1. React速度快(虚拟DOM)
    与其他框架相比,React采用了独特操作DOM的方式。
    它并不直接对DOM进行操作,它引入了一个虚拟DOM的概念,安插在JavaScript逻辑和实际的DOM之间,这一概念提高了WEB性能,我们所谓的 DOM 树其实就是一个树状结构嵌套的 JavaScript 对象。而在浏览器中,DOM 树的改动会造成浏览器一系列的计算,因此我们可以基于现有的 DOM 树结构,克隆出一份一模一样的 DOM 树,即“虚拟 DOM ”,将所有的改动都实现在这棵虚拟 DOM 上,然后统一合并至浏览器中的 DOM 树中以解决之前所提到的性能瓶颈。
  2. 跨浏览器兼容
    虚拟DOM帮助我们解决了跨浏览器问题,它为我们提供了标准化的API,甚至在IE8中都是没问题的
  3. 组件化
    为程序编写独立的模块化UI组件,并且它们可以引入其他组件。这等同于提高了代码的可维护性。
  4. 单向数据流
    在 React 中,数据的组织形式是树状的,由上至下单向流动(对应DOM树),之所以这样设计,是因为:数据流更清晰,组件的状态就更可控;
  5. 纯粹的JavaScript语法
    我们很容易就忽视 React 的这一特点,即在 React 中,没有任何特殊的专有的 React 语法需要理解和记忆,所有的组件,数据操作,业务逻辑都是通过使用 JavaScript 语法实现的。

5. React 高效的原因

  1. 使用虚拟 (virtual)DOM, 不总是直接操作页面真实DOM。
  2. DOM Diffing算法, 最小化页面重绘。

6.React 官方网站

  1. 英文官网: https://reactjs.org/
  2. 中文官网: https://react.docschina.org/

二,React基本使用

1.基础代码

  • 在书写React前需要先引入React 的js代码库下载地址
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <!-- 准备好一个容器 -->
    <div id="test"></div>
    <!-- 引入 React 核心库 -->
    <script src="../js/react.development.js"></script>
    <!-- 引入 react-dom 用于支持 react 操作 DOM -->
    <script src="../js/react-dom.development.js"></script>

    <!-- 引入babel:
            1. ES6 ==> ES5
            2. jsx ==> js
    -->
    <script src="../js/babel.min.js"></script>

    <script type="text/babel">
        // 1. 创建虚拟 DOM
        const VDOM = <h1>Hello,React</h1>

        // 2. 渲染到页面中的指定 DOM
        // ReactDOM.render(虚拟DOM,真实DOM)
        ReactDOM.render(VDOM,document.getElementById('test'))
    </script>
</body>
</html>

  • 效果
    react教程,react,react.js,javascript,前端

2.相关js库

  1. react.js:React核心库。
  2. react-dom.js:提供操作DOM的react扩展库。
  3. babel.min.js:解析JSX语法代码转为JS代码的库。
<!-- 引入React核心库 -->
    <script src="../js/react.development.js"></script>
    <!-- 操作dom -->
    <script src="../js/react-dom.development.js"></script>
    <!-- 引入babel ES6==>ES5  JSX==>JS -->
    <script src="../js/babel.min.js"></script>

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

1)js形式(不常用):

 <script type="text/babel">
        const vdom = React.createElement('h1', { id: 'title' }, 'hello,react')
        // ReactDOM.render(虚拟dom,真实Dom)
        ReactDOM.render(vdom, document.getElementById('test'))

 </script>

2)jsx形式:

<script type="text/babel">
     const VDOm = <h1>Hello,react</h1>
     // ReactDOM.render(虚拟dom,真实Dom)
     ReactDOM.render(VDOm, document.getElementById('test'))
</script>

4.虚拟DOM与真实DOM

  1. React提供了一些API来创建一种 “特别” 的一般js对象
    const VDOM = React.createElement(‘xx’,{id:‘xx’},‘xx’)
    上面创建的就是一个简单的虚拟DOM对象
  2. 虚拟DOM对象最终都会被React转换为真实的DOM
    我们编码时基本只需要操作react的虚拟DOM相关数据, react会转换为真实DOM变化而更新界。
  3. 我们编码时基本只需要操作react的虚拟DOM相关数据, react会转换为真实DOM变化而更新界。
<script type="text/babel">
    // 1. 创建虚拟 DOM
    const VDOM = (
        <h1>Hello,
            <span>React</span>
        </h1>
    )

    // 2. 渲染到页面中的指定 DOM
    // ReactDOM.render(虚拟DOM,真实DOM)
    ReactDOM.render(VDOM,document.getElementById('test'))
    const TDOM = document.getElementById('demo')
    // console.log(typeof VDOM) // Object
    // console.log(VDOM instanceof Object) // true
    console.log('虚拟DOM',VDOM)
    console.log('真实DOM',TDOM)
    // 调试
    debugger
</script>


5. 虚拟DO M与真实DOM区别

  1. 虚拟dom不会进行排版与重绘操作,虚拟dom是把js代码转为真实dom
    真实dom频繁回流与重绘效率非常低
  2. 虚拟dom可以跨平台操作而真实dom是与浏览器绑定的
  3. 虚拟dom进行频繁修改,之后一次性比较在修改真实dom中需要修改的部分,最后真实dom进行排版重绘,从而减少dom节点的排版与重绘的损耗

三,jsx的使用

1.什么是jsx

  • JavaScript的语法扩展
    JSX是一种JavaScript的语法扩展,首先运用于React中,其格式比较像是模版语言,但事实上完全是在JavaScript内部实现的。元素是构成React应用的最小单位,JSX就是用来声明React当中的元素
    React主要使用JSX来描述用户界面,但React并不强制要求使用JSX ,而JSX也在React之外的框架得到了广泛的支持,包括Vue.js ,Solid 等
  1. 全称: JavaScript XML
  2. react定义的一种类似于XML的JS扩展语法: JS + XML本质是React.createElement(component, props, …children)方法的语法糖
  3. 作用: 用来简化创建虚拟DOM
    1. 写法:var ele = < h1 >Hello JSX!</ h1 >
    2. 注意1:它不是字符串, 也不是HTML/XML标签
    3. 注意2:它最终产生的就是一个JS对象
  4. 标签名任意: HTML标签或其它标签
  5. 标签属性任意: HTML标签属性或其它
  6. 基本语法规则
    1. 遇到 <开头的代码, 以标签的语法解析: html同名标签转换为html同名元素, 其它标签需要特别解析
    2. 遇到以 { 开头的代码,以JS语法解析: 标签中的js表达式必须用{ }包含
  7. babel.js的作用
    1. 浏览器不能直接解析JSX代码, 需要babel转译为纯JS的代码才能运行
    2. 只要用了JSX,都要加上type="text/babel", 声明需要babel来处理

2.渲染虚拟DOM(元素)

  1. 语法: ReactDOM.render(virtualDOM, containerDOM)
  2. 作用: 将虚拟DOM元素渲染到页面中的真实容器DOM中显示
  3. 参数说明
    1. 参数一: 纯js或jsx创建的虚拟dom对象
    2. 参数二: 用来包含虚拟DOM元素的真实dom元素对象(一般是一个div)

3. jsx具体使用

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<style>
    .title {
        color: aqua;
    }
</style>

<body>
    <div id="test">

    </div>
    <!-- 引入React核心库 -->
    <script src="../js/react.development.js"></script>
    <!-- 操作dom -->
    <script src="../js/react-dom.development.js"></script>
    <!-- 引入babel ES6==>ES5  JSX==>JS -->
    <script src="../js/babel.min.js"></script>
    <script type="text/babel">
        let mydata = 'student';
        let data = ['hhz', 'ycc', 'wsh']
        let myId = 'IT'
        let img = "https://tse1-mm.cn.bing.net/th/id/OIP-C.x0O2Az9JvDMbgiyyU5jNCQHaDm?w=308&h=170&c=7&r=0&o=5&pid=1.7"
        function txt() {
            const vdom = (
                <div>
                    <h1 className="title" id={myId}>Hello,
                        <span>{mydata}</span>
                        <span>{new Date().toLocaleTimeString()}</span>

                    </h1>
                    <img src="https://tse1-mm.cn.bing.net/th/id/OIP-C.x0O2Az9JvDMbgiyyU5jNCQHaDm?w=308&h=170&c=7&r=0&o=5&pid=1.7" />
                    <ul>
                        {
                            data.map((item, index) => {
                                return <li key={index}>{item}</li>
                            })
                        }
                    </ul>
                </div>


            )
            
            // ReactDOM.render(虚拟dom,真实Dom)
            ReactDOM.render(vdom, document.getElementById('test'))
        }
        setInterval(txt, 1000)
    </script>
</body>

</html>

3. jsx的语法规则:

  1. 定义虚拟DOM的时候,不要写引号;
  2. 标签中混入JS表达式时,要用{}
  3. 样式的类名指定不要用class,要用className
  4. 内联样式,要用style={{key:value}}的形式去写
  5. 只能有一个根元素
  6. 所有的表现都必须闭合
  7. 标签的首字母:
    1) 若是小写字母开头,则将改标签转化为html同名的元素,渲染到页面
    若没有html同名标签,则抱错
    2) 若大写字母开头,react就去渲染对应的组件,若组件没有定义,则报错;

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

1. 模块

  1. 理解:向外提供特定功能的js程序, 一般就是一个js文件
  2. 为什么要拆成模块:随着业务逻辑增加,代码越来越多且复杂。
  3. 作用:复用js, 简化js的编写, 提高js运行效率

什么是模块

  • 将代码拆分成独立的块,然后再把这些块连接起来可以通过模块模式来实现

模块化

  • 当应用的js都以模块来编写的, 这个应用就是一个模块化的应用

2.组件

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

什么是组件

  • 组件也是抽象的概念,可以理解为一些符合某种规范的类组合在一起就构成了组件

组件化

  • 当应用是以多组件的方式实现, 这个应用就是一个组件化的应用
    react教程,react,react.js,javascript,前端

3. 函数式组件


<script type="text/babel">
	let data=["123","222"]
      function MyComponent(props) {
          console.log(this)//这里的this是undefined,因为babel编译,开启了严格模式
          console.log(props, '11111')
          return <h2>我是函数定义的组件(适用于简单组件的定义){props.name}</h2>
      }
      // ReactDOM.render(虚拟dom,真实Dom)
      ReactDOM.render(<MyComponent name={data} />, document.getElementById('test'))
</script>

执行ReactDOM.render()方法之后,发生了什么
     1.React解析了组件标签,找到了对应的组件
     2.发现这个组件是一个函数定义的,随后调用该函数,生成一个虚拟dom
     3.最后将虚拟dom转化成为真实dom,呈现在页面中

4.类式组件

<script type="text/babel">
    // 1. 创建一个类式组件
    class MyComponent extends React.Component{
        // render方法是放在原型上的
        // render中的this是谁? -- 实例对象 <===> MyComponent组件实例对象
        render(){
            console.log('render中的this',this)
            return <h2>我是用类定义的组件(适用于【复杂组件】的定义)</h2>
        }
    }
    // 2. 渲染到页面中的指定 DOM
    // ReactDOM.render(虚拟DOM,真实DOM)
    ReactDOM.render(<MyComponent />,document.getElementById('test'))
   let c = new MyComponent()
   console.log(c)
</script>

类式组件执行过程?
	React 解析了组件标签,找到对应的组件
	发现这个组件是一个类定义的,随后new出来一个实例对象,并通过该实例调用原型上的render方法
	将render()返回的内容生成了一个虚拟DOM
	最后将虚拟DOM转化为真实DOM,呈现在页面中;

使用组件时注意:

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

总结

以上就是React入门的所有东西。希望本篇文章能够帮助到你,不懂得可以评论区或者私信问我,我也会一 一解答。谢谢观看!
我的其他文章:https://blog.csdn.net/m0_60970928?type=blog文章来源地址https://www.toymoban.com/news/detail-797667.html

到了这里,关于React 超详细入门教程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • JavaScript框架 Angular、React、Vue.js 的全栈解决方案比较

    在 Web 开发领域,JavaScript 提供大量技术栈可供选择。其中最典型的三套组合,分别是 MERN、MEAN 和 MEVN。前端框架(React、Angular 和 Vue)进行简化比较。 MERN 技术栈包含四大具体组件: MongoDB:一款强大的 NoSQL 数据库,以灵活的 JSON 格式存储数据。 Express.js:一套极简但强大的

    2024年02月03日
    浏览(45)
  • 2023年最佳JavaScript框架:React、Vue、Angular和Node.js的比较

    🎉欢迎来到Java学习路线专栏~探索2023年最佳JavaScript框架:React、Vue、Angular和Node.js的比较 ☆* o(≧▽≦)o *☆嗨~我是IT·陈寒🍹 ✨博客主页:IT·陈寒的博客 🎈该系列文章专栏:Java学习路线 📜其他专栏:Java学习路线 Java面试技巧 Java实战项目 AIGC人工智能 🍹文章作者技术和水

    2024年02月11日
    浏览(38)
  • HTML+CSS+JavaScript入门教程(万字)

    作为一名后端开发人员,开发过程中,必不可少的与前端进行对接,因此尽管是后端开发者,也需要一定的前端知识,因此写下HTML+CSS+JavaScript入门知识,着重介绍了JavaScript,方便自己复习,也各位小伙伴参考。 1.1什么是HTML HTML是一门语言,所有的网页都是用HTML这门语言编写

    2024年02月14日
    浏览(36)
  • Big synopsis - 微软官方 JavaScript 入门教程【完结撒花】

    url resource Hi there, welcome to

    2024年02月21日
    浏览(29)
  • 跟着pink老师前端入门教程(JavaScript)-day02

    1、什么是变量 白话:变量就是一个装东西的盒子 通俗:变量是用于存储数据的‘ 容器 ’,通过 变量名 获取数据,甚至数据可以修改 注意: 变量不是数据本身,它们仅仅是一个用于存储数值的容器。可以理解为是一个个用来装东西的纸箱子。 2、变量在内存中的存储 本质

    2024年02月20日
    浏览(29)
  • Node.js npm V8 React Express的运行配合关系:构建JavaScript应用的基石

    目录 Node.js 和 V8 引擎 Node.js 和 npm LTS(Long Term Support) React Node.js的作用 Express Node.js 和 V8 引擎 Node.js 使用 Google 的 V8 JavaScript 引擎 来执行 JavaScript 代码。V8 是一个高性能的 JavaScript 和 WebAssembly 引擎,用于在 Google Chrome 浏览器和 Node.js 中运行 JavaScript。 V8 引擎的更新 通常包括

    2024年03月12日
    浏览(48)
  • node.js入门教程

    Node.js是一种基于Chrome V8引擎的JavaScript运行时,可以让JavaScript在服务器端运行。它具有轻量级、高效、事件驱动、非阻塞I/O等特点,被广泛应用于Web应用程序、命令行工具、后端服务等领域。本文将介绍Node.js的基本概念、安装和使用方法。 一、Node.js的基本概念 1. Node.js的特

    2024年02月01日
    浏览(46)
  • 『Three.js』入门教程

    1.官网地址 Github:https://github.com/mrdoob/three.js  我们可以直接下载压缩包并解压或使用 git clone url 若 github 过慢,则使用 gitee 对应镜像仓库:three.js: mrdoob/three.js 同步库 2.目录解析 3.启动方式 在three.js项目根目录下执行如下命令,yarn可使用 npm install yarn -g 安装 浏览器访问: 1.简

    2024年02月03日
    浏览(35)
  • 前端 react教程(详细版)

    1.1 React是什么 React是一个用于构建用户界面的JavaScript库。 React的主要特点是组件化、声明式编程以及高效的DOM更新机制。 React由Facebook开发并开源,已经成为目前最流行的前端框架之一。 1.2 React的特点 声明式编程 :React采用声明式编程模式,使得代码更加易于阅读和理解。

    2024年02月12日
    浏览(29)
  • D3JS教程_编程入门自学教程_菜鸟教程-免费教程分享

    D3是Data-Driven Documents的缩写,D3.js是一个基于数据管理文档的资源JavaScript库。 D3 是最有效的数据可视化框架之一。它允许开发人员在 HTML、CSS 和 SVG 的帮助下在浏览器中创建动态的交互式数据可视化。数据可视化是将过滤后的数据以图片和图形的形式表现出来。 D3.js入门教程

    2024年02月14日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包