浙江省交通工程建设集团网站,绥化市建设局官方网站,网店出售,谷歌云搭建wordpress一、react开始
1、react是什么
用于构建用户界面的JavaScript库 操作DOM呈现页面 #xff08;发送请求获取数据和处理数据不由react处理#xff09;fessbook开发
2、为什么要学
原生js操作DOM繁琐、效率低 使用原生js直接操作DOM#xff0c;浏览器会进行大量重绘重排 原…一、react开始
1、react是什么
用于构建用户界面的JavaScript库 操作DOM呈现页面 发送请求获取数据和处理数据不由react处理fessbook开发
2、为什么要学
原生js操作DOM繁琐、效率低 使用原生js直接操作DOM浏览器会进行大量重绘重排 原生js没有组件化编码方案代码复用率低
3、react特点
采用组件化模式声明式编码提高开发效率及组件复用率 在React Native中可以使用react语法进行移动端开发 使用虚拟DOM优秀的Diffing算法尽量减少与真实DOM的交互
4、JScript基础
判断this指向 class类 ES6语法规范 npm包管理器 原型、原型链 数组常用方法 模块化
二、使用
1、引入下列三个js
react.development.js react-dom.development.js babel.min.js
2、创建DOM
js方式创建虚拟DOM: React.createElement(标签名标签属性标签内容)创建虚拟DOM document.createElement()创建真实DOM jsx更简洁
3、虚拟DOM
本质是object类型的对象一般对象 虚拟DOM属性少真实DOM属性多因为虚拟DOM是react内部在用无需真实DOM上的那么多属性 虚拟DOM最终会被react转化为真实DOM呈现在页面上
4、jsx
jsxml属于JScript的扩展 定义虚拟DOM不写引号 标签中混入js表达式要用{} 样式的类名指定不用class用className 内联样式用style{{key:value}} 只有一个根标签 标签必须闭合
5、组件
函数式组件首字母大写 类式组件 类中的构造器非必写
6、组件实例的三大核心属性
state状态状态不可直接更改须用setState()更新 render中的this为组件实例对象 props组件外传值与批量传值 可以加属性规则 函数式组件只能使用props属性除非使用hooks refs类似原生的元素idrefs为一组ref值 字符串形式的ref存在效率问题已经弃用 回调函数形式的ref如果内置函数则执行两次第一次为null createRef用多少创建多少
7、react事件处理
8、收集表单数据
受控组件与非受控组件
9、高阶函数–函数柯里化
10、组件的生命周期
常用的生命周期函数 didMount render willUnmount 新版生命周期新增的两个生命周期 getDerivedStateFromProps()、getSnapshotBeforeUpdate()
11、DOM的Diff算法
虚拟DOM中唯一标识key的作用 破坏顺序时可能错位引起效率问题可使用id等唯一值代替
12、react脚手架
借助webpack reactwebpackes6eslint 模块化、组件化、工程化
13、样式的模块化
14、组件化编码
拆分组件 实现静态组件 实现动态组件初始化数据交互
15、组件传值
父传子props 子传父父组件先用props传函数给子组件接着子组件调此函数传值給父组件即可 状态state在哪里操作state的方法就在哪
16、react ajax
建议使用轻量级axios已经封装xmlhttprequest 使用ajax会产生跨域需要代理解决package.json文件配置单个proxy 配置多个代理在SRC根文件新建setupProxy.jshttp-proxy-middleware
17、兄弟或任意组件传值
消息订阅-发布机制PubSubjs 先订阅再发布 需要在componentWillUnmount中取消订阅
18、发送请求方式
xhr设计粗糙的API不符合关注分离原则 fetch原生函数有的老版本浏览器不支持不常用
19、单页面应用SPA路由
20、前端路由
BOMhistoryHTML5新增的historyAPI
21、react路由react-router-dom
①一级路由 link NvLink通过this.prps.children可以拿到标签体内容 Switch单一匹配path与component一一对应 ②路由的精准匹配和模糊匹配 Redirect Redirect重定向最下方 二级路由嵌套路由 ③子级路由需要加父级路由path
向路由组件传递参数
④向路由组件传递params参数声明接收在props取this.props.location.params ⑤向路由组件传递search参数不用声明正常注册路由在props取最后借助querystring解析this.props.location ⑥向路由组件传递state参数不用声明正常注册路由路由对象在props取this.props.location.state 路由栈的push默认与replace按需开启模式
编程式路由
利用this.props.history对象里的API前进回退 withRouter可以加工一般组件加让其拥有路由组件所具有的API
BrowserRouter与HashRouter
底层原理 BrowserRouter封装了HTML5提供的historyAPI HashRouter使用的是URL的哈希值 path BrowserRouter不带#HashRouter带了# 刷新后对路由state的影响 BrowserRouter不影响state保存在history对象中 HashRouter刷新后会导致路由state参数丢失
22、UIantd
ANT-Design
三、redux
专门用于状态管理的js库 集中式管理多个组件共享的状态 同步actionobject一般对象 异步actionfunction函数即action的返回值为函数需要引入redux-thunk支持异步action一般异步action中会调用同步action
react-redux 优化