React教程(详细版)

一、简介(背景)

本文篇幅较多,建议耐心看完,我相信多少会对你有所帮助!

1.1、概念

它是一个将数据渲染为HTML视图 的js库

1.2、原生js痛点

  • 用dom的API去操作dom,繁琐且效率低
  • 用js直接操作dom,浏览器会进行大量的回流和重绘
  • 原生js没有组件化的编程方案,代码复用性低,哪怕有模块话的概念,但模块化也只能拆解一个个js,对样式和结构也没办法拆解,组件化就相当于3剑客整体拆解,成为一个个的小功能

1.3、React特点

  • 采用组件化模式,声明式编码,提高开发效率和组件复用性
  • 在React Native中可以用react预发进行安卓、ios移动端开发
  • 使用虚拟dom和有些的diffing算法,尽量减少与真实dom的交互,提高性能

二、React初体验

2.1、html中使用react

需求:往div中添加一个h1标签

在这里插入图片描述

代码注解:这里涉及到3个库文件,一个react(核心库),react-dom(用于支持react操作dom的)还有一个babel(将jsx语法转成js语法,因为浏览器只能识别js),还有就是script标签中的type需要写成text/babel,因为script标签中要写jsx的语法,这里再说一点,就是你引入了react-dom库,就可以使用ReactDOM变量了,跟以前学习jquery一样,引入jquery文件就可以使用$和jquery是同样的道理

2.1.1、 创建虚拟dom的方式

①使用原生js的方式去写(一般不用)
在这里插入图片描述

代码注解:使用原生js来创建虚拟dom时,此时script标签的type就不需要写成text/babel,写成原来的text/javascript就可以了,同时也可以删除babel库了,因为不需要它进行转换,浏览器本身就能识别

②使用jsx语法创建(就是最开始的那种方式)

这里可能会有小伙伴会问,为什么不用js来创建dom呢?我看写起来也还行啊,这是因为你还没见过结构嵌套的情况,当需求改为h1标签内再嵌套一个span标签,你怎么办?是不是后面还得再继续套React.createElement(‘span’,{},‘span内容’) ,那如果继续嵌套呢?是不是废了。。。,所以这里就能看出jsx的好处了,其实babel将jsx转换后的代码就相对于用原生js写的那样,只不过这些不用你写,babel帮你转换

2.1.2、 关于创建的虚拟dom

  1. 本质上其实就是一个object对象;
  2. 虚拟dom上的属性比较少,真实dom属性多,因为虚拟dom只在recat内部使用,用不到那么多的属性
  3. 虚拟dom最终会被react转换成真实dom,呈现再页面上

2.2、JSX语法

  • 定义虚拟dom时不要用引号
  • 标签中引入js表达式要用{}
  • 如果在jsx要写行内样式需要使用style={ {coler:red}}形式
  • 样式的类名指定不能写class,要写className;
  • 只有一个根标签
  • 标签必须闭合
  • 标签首字母
    ①若小写字母开头,则会将该标签转为html同名标签,如果没找到,则会报错;
    ②若大写字母开头,则会认为是组件,它就会去找对应的组件,如果没找到,就会报组件未定义的错误;

三、React面向组件编程

3.1 安装开发者工具(React Developer Tools )

这里工具的具体安装方式就不多说了,由两种方式,一种是翻墙,直接在chrome浏览的商城去下载,还有一种方式是在浏览器扩展程序中打开开发者模式,然后导入已下载的插件文件即可

3.2 组件的分类

1. 函数式组件(适用于简单组件)
在这里插入图片描述

2. 类式组件(适用于复杂组件)
在这里插入图片描述

3.3 组件实例对象的三大属性

3.3.1、 state

这里我们用一个小需求来说说state和组件内绑定方法这两个问题,需求:点击文本,改变天气状态

在这里插入图片描述

上述图片中的例子这样的写法并不能实现我们的需求,为什么?因为changeWeather方法中打印的this是undefined,不是该weather组件的实例对象,自然也就无法拿到该实例对象上的state等属性,更加不用说去改变state中的状态了。。。那为什么会这样的?原因就写在图中,那我们要怎么处理才能让该方法拿到该组件的实例对象呢?来,看下面。。

在这里插入图片描述

在构造函数中加一句这个语句就可以了,那这行代码是什么意思呢?
构造函数中的this永远指向该组件的实例对象,所以=右侧意思就是该组件实例对象自身此时还没有该方法,他就会去原型对象上看有没有,显然这里是有的,然后调用bind方法,该方法做两件事,一、创建一个新的函数;二、函数内的this指向bing()括号中传入的,显然这里是组件实例对象;右侧执行完后,将该方法赋值给了实例对象本身的一个方法名(changeWeather),这样实例对象本身就有一个changeWeather方法了,并且内部this就是组件实例对象,所以此时render中点击调用的那个方法,实际上是this实例对象自身的一个changeWeather方法,而不是写在类中的那个原型对象上的changeWeather方法,我们为了不混淆两个重名的方法,我们区分看一下

在这里插入图片描述
好了,接下来我们要做改变状态这件事了,我们要通过react中的内置API(setState方法),不能直接更改state,就像下面这样。
在这里插入图片描述

好了,到现在需求已经满足了,但我们要对其简化。。。
在这里插入图片描述<

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: React教程PDF是一种电子书,用于学习和了解React框架的使用和开发。这个教程通常包含基本概念、核心概念、组件、状态管理、路由等内容。 在这个教程中,你可以学习到如何使用React构建UI组件,React的虚拟DOM概念以及其在性能优化方面的作用。此外,还会介绍React的生命周期方法,这在处理组件的加载、渲染和更新过程中很有用。 除了React基本知识外,教程还可能包含一些实际应用方面的案例和实践经验。这些案例可以帮助你更好地理解React的使用,并提供一些编程技巧和最佳实践。 通常,React教程PDF是免费提供的,你可以从官方网站、开源社区或一些教育平台上找到这些资源。当然,有时也会出现一些收费的高质量教程,这些教程会提供更深入和全面的内容。 无论你是React初学者还是有一些经验的开发者,通过阅读React教程PDF可以帮助你扩展知识和提升技能,进一步了解React框架。最重要的是,你可以通过教程中提供的实例和指导来实践和运用你的学习成果,以便更好地应用React在真实项目中。 ### 回答2: React 是一个用于构建用户界面的 JavaScript 库,它可以帮助开发者创建高效、可重用的组件化界面。如果你想学习 React,最好的方式是通过官方提供的教程React 的官方网站提供了一个详尽的教程,其中包含了许多实用的示例和解释。这个教程是免费提供的,并且可以在网站上直接阅读或者下载为 PDF 格式。它的内容非常全面,适合初学者入门以及有一定经验的开发者用作参考。 在这个教程中,你将学习到 React 的基本概念,包括组件、状态和属性等。你将了解到如何创建组件、处理事件、进行条件渲染等等。教程还会引导你使用 JSX 语法编写代码,这是 React 的核心特性之一,可以让你在 JavaScript 中嵌入 XML 标记,更加直观地描述界面结构。 此外,教程还会介绍如何使用 React 的生态系统,比如 React Router 进行路由管理,以及 Redux 进行状态管理。你将了解到如何使用 Babel 和 Webpack 进行工程化的配置,以及如何使用 React 开发工具进行调试。 总的来说,React 的官方教程提供了非常丰富的内容,无论你是初学者还是有一定经验的开发者,都能从中获得很多收益。如果你想深入学习 React,我强烈推荐你阅读这个教程。你可以访问 React 官方网站并下载相应的 PDF 本。祝你学习愉快! ### 回答3: React 是一个用于构建用户界面的 JavaScript 库。它提供了高效的设计和开发工具,使得前端开发变得更加简单和快捷。React 使用虚拟 DOM 的概念,将页面的更改抽象为不同的状态,在状态变化时只需要更新需要修改的部分,而不是整个页面,从而提高了性能。 React教程主要介绍了 React 的基本概念和用法。它从环境搭建开始,讲解了如何使用 React 的各个部分,包括组件、props、状态管理等。教程提供了一些示例代码,并对其进行了详细解释,让读者能快速入门并理解 React 的基本原理。 React 教程的优点之一是它的实用性。通过教程,读者可以学习到如何通过 React 构建复杂的用户界面,并了解到一些常用的设计模式和最佳实践。教程还提供了一些实例项目,帮助读者将所学应用到实际项目中。 此外,教程还介绍了一些与 React 相关的工具和库,如 React Router 和 Redux。这些工具可以帮助开发者更好地组织和管理 React 项目,提高开发效率。 总的来说,React 教程是一个很好的入门资源,它能帮助读者快速掌握 React 的基本概念和用法,并提供了一些实用的示例和项目,让读者能在实际开发中更好地应用 React。无论是刚入门的前端开发者还是有一定经验的开发者,都可以从中获得很多有益的知识和经验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值