| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> JavaScript知识库 -> react笔记 -> 正文阅读 |
|
[JavaScript知识库]react笔记 |
一. React入门1.1 React简介1.1.1 官网1.英文官网: https://reactjs.org/ 1.1.2 介绍描述1.用于动态构建用户界面的 JavaScript 库(只关注于视图) 1.1.3 React的特点1.声明式编码 1.1.4 React高效的原因1.使用虚拟(virtual)DOM, 不总是直接操作页面真实DOM。 1.2 React的基本使用1.2.1 效果1.2.2 相关JS库1.react.js:React核心库。 1.2.3 创建虚拟DOM的两种方式[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZAQJP2se-1631449545446)(ca4e3cf5dccac621fe1df54cfffae0bc.png)] 1.纯JS方式(一般不用) 1.2.4 虚拟DOM与真实DOM1.React提供了一些API来创建一种 “特别” 的一般js对象 1.3 React JSX1.3.1 效果1.3.2 JSX1.全称: JavaScript XML Hello?JSX!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来处理 1.3.3 渲染虚拟DOM(元素)1.语法: ReactDOM.render(virtualDOM,?containerDOM) 1.4 模块与组件、模块化与组件化的理解1.4.1 模块1.理解:向外提供特定功能的js程序, 一般就是一个js文件 1.4.2 组件1.理解:用来实现局部功能效果的代码和资源的集合(html/css/js/image等等) 1.4.3 模块化当应用的js都以模块来编写的, 这个应用就是一个模块化的应用 1.4.4 组件化当应用是以多组件的方式实现, 这个应用就是一个组件化的应用 二. React面向组件编程2.1 基本理解和使用2.1.1 使用React开发者工具调试2.1.2 效果函数式组件:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4duhOUzD-1631449545449)(91b002d4dc87557ab79e459af3de4267.png)] 类式组件:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9EuZJC6n-1631449545450)(c8aa24ac46e0d76a3504cae134d018be.png)] 2.1.3 注意1.组件名必须首字母大写 2.1.4 渲染类组件标签的基本流程1.React内部会创建组件实例对象 2.2 组件三大核心属性 1:state2.2.1 理解1.state是组件对象最重要的属性, 值是对象(可以包含多个key-value的组合) 2.2.2 强烈注意1.组件中render方法中的this为组件实例对象 2.3 组件三大核心属性 2:props2.3.1 理解1.每个组件对象都会有props(properties的简写)属性 2.3.2 作用1.通过标签属性从组件外向组件内传递变化的数据 2.3.4 编码操作1.内部读取某个属性值[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Qy3Nhman-1631449545452)(6765b0860683cebcd05c5f7e974d45d3.png)] 2.对props中的属性值进行类型限制和必要性限制 第一种方式(React v15.5 开始已弃用)[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HKGNoref-1631449545453)(7f8d3a23451aa4675751e87bf8777846.png)]: 第二种方式(新):使用prop-types库进限制(需要引入prop-types库)[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-m5LJ8daS-1631449545454)(11d77ca610ab1ada7ea9b7f5827a5fe4.png)] 3.扩展属性: 将对象的所有属性通过props传递[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EY6u6QYG-1631449545455)(d02c09916725aabcbe7a69ea96065036.png)] 4.默认属性值:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JxygcUIu-1631449545455)(36accc7415f7f4c2935e412a007c0bb0.png)] 5.组件类的构造函数[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XDEJ9Cqa-1631449545456)(e599afc2bee660f11fe7c3590860a38f.png)] 2.4 组件三大核心属性3: refs与事件处理2.4.1 理解组件内的标签可以定义ref属性来标识自己 2.4.2 编码1.字符串形式的ref[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sSpiG5Nw-1631449545457)(1d023ed161dab6765cb6f94accd6ed0f.png)] 2.回调形式的ref[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZcWPByqx-1631449545457)(0b897878a9350642d1a3546ed6cdedd2.png)] 3.createRef创建ref容器·[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-s00WKxeA-1631449545458)(5103748384f34ef41550d3d473ebff5e.png)] 2.4.4 事件处理1.通过onXxx属性指定事件处理函数(注意大小写) 2.5 收集表单数据2.5.1 理解包含表单的组件分类 2.6 组件的生命周期2.6.1 理解1.件从创建到死亡它会经历一些特定的阶段。 2.6.2 生命周期流程图(旧)[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kq5LVsNa-1631449545459)(3bf0de479b6a110f190a8eb7176a78d3.png)] 生命周期的三个阶段(旧) 1. 初始化阶段:由ReactDOM.render()触发—初次渲染 1.constructor() 2. 更新阶段:由组件内部this.setSate()或父组件重新render触发 1.shouldComponentUpdate() 3.卸载组件:由ReactDOM.unmountComponentAtNode()触发 1.componentWillUnmount() 2.6.4 生命周期流程图 (新)[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fof4a50U-1631449545459)(bdf543d0b1fbced31733d80e19eb3416.png)] 生命周期的三个阶段(新) 1.初始化阶段:由ReactDOM.render()触发—初次渲染 1.constructor() 2.更新阶段:由组件内部this.setSate()或父组件重新render触发 1.getDerivedStateFromProps 3.卸载组件:由ReactDOM.unmountComponentAtNode()触发 1.componentWillUnmount() 2.6.5 重要的勾子1.render:初始化渲染或更新渲染调用 2.6.6 即将废弃的勾子1.componentWillMount 现在使用会出现警告,下一个大版本需要加上UNSAFE_前缀才能使用,以后可能会被彻底废弃,不建议使用。 2.7 虚拟DOM与DOM Diffing算法2.7.1 基本原理图[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JFviREL9-1631449545460)(641e2228d9e3f6c55468dc3d8c65df44.png)] 三. React应用(基于React脚手架)3.1 使用create-react-app创建react应用3.1.1 react脚手架1.xxx脚手架: 用来帮助程序员快速创建一个基于xxx库的模板项目) 1).包含了所有需要的配置(语法检查、jsx编译、devServer…) 2.react提供了一个用于创建react项目的脚手架库: create-react-app 3.1.2 创建项目并启动第一步,全局安装:npm i -g create-react-app 3.1.3 react脚手架项目结构public ---- 静态资源文件夹 3.1.4 功能界面的组件化编码流程(通用)
四. React ajax4.1 理解4.1.1 前置说明1.React本身只关注于界面, 并不包含发送ajax请求的代码 4.1.2 常用的ajax库1.jQuery: 比较重, 如果需要另外引入不建议使用 4.2 axios4.2.1 文档https://github.com/axios/axios 4.2.2 相关API1)GET请求
2)POST请求
五. React路由5.1 相关理解5.1.1 SPA的理解1.单页Web应用(single page web application,SPA)。 5.1.2 路由的理解1.什么是路由1.一个路由就是一个映射关系(key:value) 2.路由分类
1)理解: value是function, 用来处理客户端提交的请求。
1)浏览器端路由,value是component,用于展示页面内容。 5.1.3 react-router-dom的理解1.react的一个插件库。 5.2 react-router-dom相关API5.2.1 内置组件1. 5.2.2 其他1.history对象 六. React UI组件库6.1 流行的开源React UI组件库6.1.1 material-ui(国外)1.官网: http://www.material-ui.com/#/ 6.2.2 ant-design(国内蚂蚁金服)1.官网: https://ant.design/index-cn 七. redux7.1 redux理解7.1.1 学习文档1.英文文档: https://redux.js.org/ 7.1.2 redux是什么1.redux是一个专门用于做状态管理的JS库(不是react插件库)。 7.1.3 什么情况下需要使用redux1.某个组件的状态,需要让其他组件可以随时拿到(共享)。 7.1.4 redux工作流程[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mG4JKm7z-1631449545461)(59e389c53a52cd4459025d090babd33f.png)] 7.2 redux的三个核心概念7.2.1 action1.动作的对象 7.2.2 reducer1.用于初始化状态、加工状态。 7.2.3 store1.将state、action、reducer联系在一起的对象 7.3 redux的核心API7.3.1 createstore()作用:创建包含指定reducer的store对象 7.3.2 store对象1.作用: redux库最核心的管理对象 7.3.3 applyMiddleware()作用:应用上基于redux的中间件(插件库) 7.3.4 combineReducers()作用:合并多个reducer函数 7.4 redux异步编程7.4.1 理解:1.redux默认是不能进行异步处理的, 7.4.2 使用异步中间件npm install --save redux-thunk 7.5 react-redux7.5.1 理解1.一个react插件库 7.5.2 react-Redux将所有组件分成两大类1.UI组件 7.5.3 相关API1.Provider:让所有组件都可以得到state数据 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FBi08Dw8-1631449545462)(b7e49e5c577a0085c3865dd6a66bb021.png)] 2.connect:用于包装 UI 组件生成容器组件 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Mki1pmia-1631449545462)(d09752e338805306800ef8b265c11573.png)] 3.mapStateToprops:将外部的数据(即state对象)转换为UI组件的标签属性 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DoLudHjT-1631449545463)(16b5881dbcd8f9350695fb86cfbf1e59.png)] 4.mapDispatchToProps:将分发action的函数转换为UI组件的标签属性 7.6 使用redux调试工具7.6.1 安装chrome浏览器插件[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0DD2AroM-1631449545463)(2d07ef650a2d20c78d7e288a73d41447.png)] 7.6.2 下载工具依赖包npm install --save-dev redux-devtools-extension 7.7 纯函数和高阶函数7.7.1 纯函数1.一类特别的函数: 只要是同样的输入(实参),必定得到同样的输出(返回) 7.7.2 高阶函数1.理解: 一类特别的函数 |
|
JavaScript知识库 最新文章 |
ES6的相关知识点 |
react 函数式组件 & react其他一些总结 |
Vue基础超详细 |
前端JS也可以连点成线(Vue中运用 AntVG6) |
Vue事件处理的基本使用 |
Vue后台项目的记录 (一) |
前后端分离vue跨域,devServer配置proxy代理 |
TypeScript |
初识vuex |
vue项目安装包指令收集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 16:41:02- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |