最全React全家桶(技术栈)_react全家桶包括哪些技术(1),新鲜出炉的大数据开发面试真题集锦我给你们整理出来了

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化资料的朋友,可以戳这里获取

	- [7.5.2. 使用异步中间件](#752__881)
+ [7.6. react-redux](#76_reactredux_885)
+ - [7.6.1. 理解](#761__887)
	- [7.6.2. react-Redux将所有组件分成两大类](#762_reactRedux_893)
	- [7.6.3. 相关API](#763_API_913)
+ [7.7. 使用上redux调试工具](#77_redux_929)
+ - [7.7.1. 安装chrome浏览器插件](#771_chrome_931)
	- [7.7.2. 下载工具依赖包](#772__935)
+ [7.8. 纯函数和高阶函数](#78__941)
+ - [7.8.1. 纯函数](#781__943)
	- [7.8.2. 高阶函数](#782__957)

React全家桶(技术栈)

尚硅谷前端研究院

第1章:React入门

React简介

官网

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

介绍描述

  1. 用于动态构建用户界面的 JavaScript 库(只关注于视图)
  2. 由Facebook开源

React的特点

  1. 声明式编码
  2. 组件化编码
  3. React Native 编写原生应用
  4. 高效(优秀的Diffing算法)

React高效的原因

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

React的基本使用

效果

img

相关js库
  1. react.js:React核心库。
  2. react-dom.js:提供操作DOM的react扩展库。
  3. babel.min.js:解析JSX语法代码转为JS代码的库。
创建虚拟DOM的两种方式

img

  1. 纯JS方式(一般不用)
  2. JSX方式
虚拟DOM与真实DOM
  1. React提供了一些API来创建一种 “特别” 的一般js对象

l const VDOM = React.createElement(‘xx’,{id:‘xx’},‘xx’)

l 上面创建的就是一个简单的虚拟DOM对象

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

React JSX

效果

img

JSX
  1. 全称: JavaScript XML

  2. react定义的一种类似于XML的JS扩展语法: JS + XML本质是React.createElement(component, props, …children)方法的语法糖

  3. 作用: 用来简化创建虚拟DOM

  4. 写法:var ele =

Hello JSX!

  1. 注意1:它不是字符串, 也不是HTML/XML标签

  2. 注意2:它最终产生的就是一个JS对象

  3. 标签名任意: HTML标签或其它标签

  4. 标签属性任意: HTML标签属性或其它

  5. 基本语法规则

  6. 遇到 <开头的代码, 以标签的语法解析: html同名标签转换为html同名元素, 其它标签需要特别解析

  7. 遇到以 { 开头的代码,以JS语法解析: 标签中的js表达式必须用{ }包含

  8. babel.js的作用

  9. 浏览器不能直接解析JSX代码, 需要babel转译为纯JS的代码才能运行

  10. 只要用了JSX,都要加上type=“text/babel”, 声明需要babel来处理

渲染虚拟DOM(元素)
  1. 语法: ReactDOM.render(virtualDOM, containerDOM)

  2. 作用: 将虚拟DOM元素渲染到页面中的真实容器DOM中显示

  3. 参数说明

  4. 参数一: 纯js或jsx创建的虚拟dom对象

  5. 参数二: 用来包含虚拟DOM元素的真实dom元素对象(一般是一个div)

JSX练习

需求: 动态展示如下列表

img

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

模块
  1. 理解:向外提供特定功能的js程序, 一般就是一个js文件
  2. 为什么要拆成模块:随着业务逻辑增加,代码越来越多且复杂。
  3. 作用:复用js, 简化js的编写, 提高js运行效率
组件
  1. 理解:用来实现局部功能效果的代码和资源的集合(html/css/js/image等等)
  2. 为什么要用组件: 一个界面的功能更复杂
  3. 作用:复用编码, 简化项目编码, 提高运行效率
模块化

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

组件化

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

img

第2章:React面向组件编程

2.1. 基本理解和使用

2.1.1. 使用React开发者工具调试

img

2.1.2. 效果

函数式组件:

img

类式组件:

img

2.1.3. 注意
  1. 组件名必须首字母大写
  2. 虚拟DOM元素只能有一个根元素
  3. 虚拟DOM元素必须有结束标签
2.1.4. 渲染类组件标签的基本流程
  1. React内部会创建组件实例对象
  2. 调用render()得到虚拟DOM, 并解析为真实DOM
  3. 插入到指定的页面元素内部

2.2. 组件三大核心属性1: state

2.2.1. 效果

*需求😗* 定义一个展示天气信息的组件

1. 默认展示天气炎热 或 凉爽

2. 点击文字切换天气

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

2.2.2. 理解
  1. state是组件对象最重要的属性, 值是对象(可以包含多个key-value的组合)
  2. 组件被称为"状态机", 通过更新组件的state来更新对应的页面显示(重新渲染组件)
2.2.3. 强烈注意
  1. 组件中render方法中的this为组件实例对象
  2. 组件自定义的方法中this为undefined,如何解决?

a) 强制绑定this: 通过函数对象的bind()

b) 箭头函数

  1. 状态数据,不能直接修改或更新

2.3. 组件三大核心属性2: props

2.3.1. 效果

*需求😗* 自定义用来显示一个人员信息的组件

1. 姓名必须指定,且为字符串类型;

2. 性别为字符串类型,如果性别没有指定,默认为男

3. 年龄为字符串类型,且为数字类型,默认值为1*8

img

2.3.2. 理解
  1. 每个组件对象都会有props(properties的简写)属性
  2. 组件标签的所有属性都保存在props中
2.3.3. 作用
  1. 通过标签属性从组件外向组件内传递变化的数据
  2. 注意: 组件内部不要修改props数据
2.3.4. 编码操作
  1. 内部读取某个属性值

img

  1. 对props中的属性值进行类型限制和必要性限制

第一种方式(React v15.5 开始已弃用):img

第二种方式(新):使用prop-types库进限制(需要引入prop-types库)

img

  1. 扩展属性: 将对象的所有属性通过props传递

img

  1. 默认属性值:

img

  1. img组件类的构造函数

2.4. 组件三大核心属性3: refs与事件处理

2.4.1. 效果

需求: 自定义组件, 功能说明如下:

1. 点击按钮, 提示第一个输入框中的值

2. 当第2个输入框失去焦点时, 提示这个输入框中的值

效果如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

2.4.2. 理解

组件内的标签可以定义ref属性来标识自己

2.4.3. 编码
  1. 字符串形式的ref

img

  1. 回调形式的ref

img

  1. createRef创建ref容器·

img

2.4.4. 事件处理
  1. 通过onXxx属性指定事件处理函数(注意大小写)

  2. React使用的是自定义(合成)事件, 而不是使用的原生DOM事件

  3. React中的事件是通过事件委托方式处理的(委托给组件最外层的元素)

  4. 通过event.target得到发生事件的DOM元素对象

2.5. 收集表单数据

2.5.1. 效果

*需求😗* 定义一个包含表单的组件

*输入用户名密码后,** 点击登录提示输入信息

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

2.5.2. 理解

包含表单的组件分类

  1. 受控组件
  2. 非受控组件

2.6. 组件的生命周期

2.6.1. 效果

需求:定义组件实现以下功能:

1. 让指定的文本做显示 / 隐藏的渐变动画

2. 从完全可见,到彻底消失,耗时*2S

3. 点击“不活了”按钮从界面中卸载组件

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

2.6.2. 理解
  1. 组件从创建到死亡它会经历一些特定的阶段。
  2. React组件中包含一系列勾子函数(生命周期回调函数), 会在特定的时刻调用。
  3. 我们在定义组件时,会在特定的生命周期回调函数中,做特定的工作。
2.6.3. 生命周期流程图(旧)

img

生命周期的三个阶段(旧)

​ 1. 初始化阶段: 由ReactDOM.render()触发—初次渲染

  1. constructor()
  2. componentWillMount()
  3. render()
  4. componentDidMount()

​ 2. 更新阶段: 由组件内部this.setSate()或父组件重新render触发

  1. shouldComponentUpdate()
  2. componentWillUpdate()
  3. render()
  4. componentDidUpdate()

​ 3. 卸载组件: 由ReactDOM.unmountComponentAtNode()触发

  1. componentWillUnmount()
2.6.4. 生命周期流程图(新)

img

生命周期的三个阶段(新)

  1. 初始化阶段: 由ReactDOM.render()触发—初次渲染
  2. constructor()

2. getDerivedStateFromProps

  1. render()
  2. componentDidMount()

​ 2. 更新阶段: 由组件内部this.setSate()或父组件重新render触发

1. getDerivedStateFromProps

  1. shouldComponentUpdate()
  2. render()

4. getSnapshotBeforeUpdate

  1. componentDidUpdate()

​ 3. 卸载组件: 由ReactDOM.unmountComponentAtNode()触发

  1. componentWillUnmount()
2.6.5. 重要的勾子
  1. render:初始化渲染或更新渲染调用
  2. componentDidMount:开启监听, 发送ajax请求
  3. componentWillUnmount:做一些收尾工作, 如: 清理定时器
2.6.6. 即将废弃的勾子
  1. componentWillMount
  2. componentWillReceiveProps
  3. componentWillUpdate

现在使用会出现警告,下一个大版本需要加上UNSAFE_前缀才能使用,以后可能会被彻底废弃,不建议使用。

2.7. 虚拟DOM与DOM Diffing算法

2.7.1. 效果

需求:验证虚拟DOM Diffing算法的存在

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

2.7.2. 基本原理图

img

第3章:React应用(基于React脚手架)

3.1. 使用create-react-app创建react应用

3.1.1. react脚手架
  1. xxx脚手架: 用来帮助程序员快速创建一个基于xxx库的模板项目
  2. 包含了所有需要的配置(语法检查、jsx编译、devServer…)
  3. 下载好了所有相关的依赖
  4. 可以直接运行一个简单效果
  5. react提供了一个用于创建react项目的脚手架库: create-react-app
  6. 项目的整体技术架构为: react + webpack + es6 + eslint
  7. 使用脚手架开发的项目的特点: 模块化, 组件化, 工程化
3.1.2. 创建项目并启动

第一步,全局安装:npm i -g create-react-app

第二步,切换到想创项目的目录,使用命令:create-react-app hello-react

第三步,进入项目文件夹:cd hello-react

第四步,启动项目:npm start

3.1.3. react脚手架项目结构

​ public ---- 静态资源文件夹

​ favicon.icon ------ 网站页签图标

​ index.html -------- 主页面

​ logo192.png ------- logo图

​ logo512.png ------- logo图

​ manifest.json ----- 应用加壳的配置文件

​ robots.txt -------- 爬虫协议文件

src ---- 源码文件夹

​ App.css -------- App组件的样式

​ App.js --------- App组件

​ App.test.js ---- 用于给App做测试

​ index.css ------ 样式

​ index.js ------- 入口文件

​ logo.svg ------- logo图

​ reportWebVitals.js

​ — 页面性能分析文件(需要web-vitals库的支持)

​ setupTests.js

​ ---- 组件单元测试的文件(需要jest-dom库的支持)

3.1.4. 功能界面的组件化编码流程(通用)
  1. 拆分组件: 拆分界面,抽取组件
  2. 实现静态组件: 使用组件实现静态页面效果
  3. 实现动态组件

3.1 动态显示初始化数据

3.1.1 数据类型

3.1.2 数据名称

3.1.2 保存在哪个组件?

3.2 交互(从绑定事件监听开始)

3.2. 组件的组合使用-TodoList

*功能😗* 组件化实现此功能

1. 显示所有todo列表

2. *输入文本,* *点击按钮显示到列表的首位,* 并清除输入的文本

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

第4章:React ajax

4.1. 理解

4.1.1. 前置说明
  1. React本身只关注于界面, 并不包含发送ajax请求的代码
  2. 前端应用需要通过ajax请求与后台进行交互(json数据)
  3. react应用中需要集成第三方ajax库(或自己封装)
4.1.2. 常用的ajax请求库
  1. jQuery: 比较重, 如果需要另外引入不建议使用

  2. axios: 轻量级, 建议使用

  3. 封装XmlHttpRequest对象的ajax

  4. promise风格

  5. 可以用在浏览器端和node服务器端

4.2. axios

4.2.1. 文档

https://github.com/axios/axios

4.2.2. 相关API

GET请求

axios.get(‘/user?ID=12345’) .then(function (response) { console.log(response.data); }) .catch(function (error) { console.log(error); }); axios.get(‘/user’, { params: { ID: 12345 } }) .then(function (response) { console.log(response); }) .catch(function (error) { console.log(error); });

POST请求

axios.post(‘/user’, { firstName: ‘Fred’, lastName: ‘Flintstone’}).then(function (response) {console.log(response);}).catch(function (error) {console.log(error);});

4.3. 案例—github用户搜索

4.3.1. 效果

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

请求地址: https://api.github.com/search/users?q=xxxxxx

4.4. 消息订阅-发布机制

  1. 工具库: PubSubJS

  2. 下载: npm install pubsub-js --save

  3. 使用:

  4. import PubSub from ‘pubsub-js’ //引入

  5. PubSub.subscribe(‘delete’, function(data){ }); //订阅

  6. PubSub.publish(‘delete’, data) //发布消息

4.5. 扩展:Fetch

4.5.1. 文档
  1. https://github.github.io/fetch/
  2. https://segmentfault.com/a/1190000003810652
4.5.2. 特点
  1. fetch: 原生函数,不再使用XmlHttpRequest对象提交ajax请求
  2. 老版本浏览器可能不支持
4.5.3. 相关API

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

rch/users?q=xxxxxx

4.4. 消息订阅-发布机制

  1. 工具库: PubSubJS

  2. 下载: npm install pubsub-js --save

  3. 使用:

  4. import PubSub from ‘pubsub-js’ //引入

  5. PubSub.subscribe(‘delete’, function(data){ }); //订阅

  6. PubSub.publish(‘delete’, data) //发布消息

4.5. 扩展:Fetch

4.5.1. 文档
  1. https://github.github.io/fetch/
  2. https://segmentfault.com/a/1190000003810652
4.5.2. 特点
  1. fetch: 原生函数,不再使用XmlHttpRequest对象提交ajax请求
  2. 老版本浏览器可能不支持
4.5.3. 相关API

[外链图片转存中…(img-mRasxO3R-1715797076398)]
[外链图片转存中…(img-itw15fPQ-1715797076398)]

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 22
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
React全家桶技术栈是指在React开发中常用的一系列工具和库。常见的React全家桶技术栈包括ReactReact Router、React Redux、Redux Saga、Reselect、Webpack、ES6、TypeScript和Sass。 React是一个用于构建用户界面的JavaScript库,它提供了组件化开发的能力,使得开发者可以更加高效地构建复杂的UI。 React Router是一个用于在React应用中处理路由的库,它允许你在应用中定义不同的路由,并在用户导航时进行相应的页面切换。 React Redux是一个为React应用提供状态管理的库,它结合了Redux和React,使得状态管理变得更加简单和可预测。 Redux Saga是一个用于处理异步操作的库,它基于Generator函数和ES6的语法糖来管理副作用和异步流程。 Reselect是一个用于创建可记忆化的选择器函数的库,它可以帮助优化应用的性能,避免不必要的计算。 Webpack是一个模块打包工具,它可以将多个模块打包成一个文件,以提高应用的加载速度,并支持各种前端开发的工作流程。 ES6是ECMAScript 6的简称,它是JavaScript的下一代标准,提供了许多新的语法和功能,使得开发更加简洁和高效。 TypeScript是JavaScript的超集,它添加了静态类型检查等特性,提供了更好的开发工具和可维护性。 Sass是一种CSS预处理器,它增加了许多便捷的语法和功能,使得CSS更加可维护和可扩展。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [react技术栈全家桶(总结及感悟)](https://blog.csdn.net/weixin_33937778/article/details/88021742)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值