React学习笔记

你以为你用的react框架有什么特色呢?

1)使用jsx语法,能够在js中写html。
2)单向数据流:数据一旦更新,会渲染整个app。
react的渲染方式:
用户输入
从API获取数据
将数据传给顶层组件
React将每一个组件渲染出来
因为是单向数据流,因此不会有双向数据绑定、数据模型的脏检查、确切的DOM操做。javascript

react组件

能够接受参数、可复用、能够传递、返回结果(渲染组件)html

react高阶组件

高阶组件就是实现组件的复用,接收一个组件返回一个新的组件。java

虚拟DOM树

javascript虽然快,可是操做DOM却很是慢。react

react的生命周期

安装:建立组件的实例将其插入DOM时,将按如下顺序调用这些方法:
constructor()
static getDerivedStateFromProps()
render()
componentDidMount()
更新:props or state的更改可能致使更新。从新呈现组件时,将按如下顺序调用这些方法:
static getDerivedStateFromProps()
shouldComponentUpdate()
render()
getSnapshotBeforeUpdate()
componentDidUpdate()
卸载:从DOM中删除组件时调用此方法。
componentWillUnmount()算法

setState是异步的仍是同步的
异步app

clipboard.png
setState是如何实现的?
调用setState更新this.state不是立刻生效的,是异步。
而后以后会发生什么?
会执行更新阶段的life circle hooks,调用render函数的过程当中会执行diff算法。
Vdom
为何须要vdom?
虚拟dom就是结构树和 dom 的结构同样的对象。
用虚拟dom配合diff算法找出须要更新的部分,避免额外更新dom的开销。
Diff算法的原理框架