1.一种编程范式,概念比较多
2.纯函数
3.不可变值
1.只比较同一层级,不跨级比较
2.tag不相同,直接删掉重建,不再深度比较
3.tag和key相同,则认为是相同节点,不再深度比较
jsx本质是通过React.createElement();来实现的
SetState无所谓同步还是异步
看是否能命中batchUpdate机制
判断isBatchingUpdates
哪些能命中batchUpdate机制
生命周期(和它调用的函数)
React中注册的函数(和它调用的函数)
React可以“管理”的入口
哪些不能命中batchUpdate机制
setTimeout,setInterval(和它调用的函数)
自定义的Dom事件(和它调用的函数)
React“管不到”的入口
- transcation.initialize=function(){
- console.log('initialize')
- }
- transcation.close=function(){
- console.log('close')
- }
- function method(){
- console.log('abc')
- }
-
- transcation.perfrom(method);
1.JSX即createElement函数
2.执行生成Vnode
3.patch(elem,vnode)和patch(vnode,newvnode)来实现渲染和更新
1.获取props和state
2.render()根据JSX生成Vnode
3.通过patch(elem,Vnode) 来进行渲染
1.setState(newState)--->dirtyComponents
2.render生成newVnode
3.patch(vnode,newVnode)
其中patch分为两个阶段:
reconciliation阶段-执行diff算法,纯JS计算
commit阶段-将diff结果渲染DOM