预习



基本知识

JSX 知识






事件

在constructor 里面写 bind 更好,在render里面写会每次都bind一次,在constructor中只 bind 一次
方法设置为箭头函数也可以


事件不是原生的 event,是合成事件的 event,原生是 MouseEvent,



传递参数和 vue 一样 最后一个参数是事件
表单

受控组件,组件受 state 里面的某个值控制
模拟 v-model 使用 onChange 改变数值,用 value 绑定改变后得值


父子组件通讯
数据放在高层组件中,底层组价中进行通讯


传事件

setState
不可变值

函数组件,默认没有 state
使用 state 时,state 是一个新的值,当使用的时候再进行操作

对数组进行操作,使用不可变值,

setState 是同步还是异步


setState 合并会合并 state


生命周期



基础复习



高级特性



函数组件
如果无关生命周期和 state 的改变,建议使用函数式组件


非受控组件
自己内部的值不受钩子事件的影响,拿组件里面的值时,通过 ref 来获取

- 在 constructor 里面定义一个 ref 的变量 this.xxxref=React.createRef()
- 在标签上绑定声明的 ref 变量
- 通过 this.xxxref.current 获取当前节点




Portals

类似于 v-slot


当需要将子组件放在最外层


context

产生

管理

消费


异步加载组件




性能优化
性能优化相对于 react 更加重要
setState 强调的是不可变值
不写不可变值有些地方会踩坑

shouldComponentUpdate
shouldComponentUpdate 默认返回的是 true

React 默认: 父组件有更新,子组件则无条件也会更新
性能优化对于 React 更加重要
shouldComponentUpdate 一定要每次都用吗?—— 需要的时候才优化




PureComponent 和 memo



immutable.js



React 高阶组件





Render Props(vue 不能用)




Redux









React-router






原理


函数式编程

vdom和diff


JSX本质是什么
通过 createElement 创建元素,第一个参数是元素或者组件,第二个是属性,第三个是子元素,返回的值是一个 vNode 节点,然后会通过 patch 进行比对渲染





合成事件




setState 和 batchUpdate



观察是否处于批量更新的机制中
isBatchingUpdates 是 true 就是批量更新,false 就是非批量更新




transaction 事务机制

执行 perform 时,之前会在初始化

组件渲染和更新的过程




setstate 如果是异步更新



fiber 如何优化性能










react 演练





















