Skip to content

Commit

Permalink
add 11.07 comment
Browse files Browse the repository at this point in the history
  • Loading branch information
yygmind committed Nov 7, 2018
1 parent 1617b9e commit df656e8
Showing 1 changed file with 26 additions and 2 deletions.
28 changes: 26 additions & 2 deletions daily reading/2018.11.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,33 @@

#### 11月7号

* [React事件系统和源码浅析](https://juejin.im/post/5bdf0741e51d456b8e1d60be)
* [React事件系统和源码浅析](https://juejin.im/post/5bdf0741e51d456b8e1d60be)(优)
* React为了**性能****复用**,采用了事件代理,池,批量更新,跨浏览器和跨平台兼容等思想,将事件监听挂载在document上构造合成事件,在内部模拟了一套捕获冒泡并触发回调函数的机制
* 执行顺序:document原生事件 --> 合成事件(冒泡 innerClick --> outerClick)--> window
* 如果是由React引发的事件处理(比如通过onClick引发的事件处理),调用setState会异步更新state。除此之外的setState调用会同步执行state,包括通过addEventListener直接添加的事件处理函数,还有通过promise/setTimeout/setInterval产生的异步调用。
* React合成的`SyntheticEvent`采用了****的思想,从而达到节约内存,避免频繁的创建和销毁事件对象的目的。
* React源码中随处可见batch做**批量更新**,基本上凡是可以批量处理的事情(最普遍的`setState`)React都会将中间过程保存起来,留到最后面才flush掉。
* 异步渲染的情况下假如我点了两次按钮,那么第二次按钮响应的时候,可能第一次按钮的handlerA中调用的`setState`还未最终被commit到DOM树上,这时需要把第一次按钮的结果先给flush掉并commit到DOM树,才能够保持一致性。



* [Vue 生命周期梳理](https://juejin.im/post/5bd3b97f6fb9a05ce874246b)
* [JavaScript 复杂判断的更优雅写法](https://juejin.im/post/5bdfef86e51d453bf8051bf8)
* beforeCreate中拿不到任何数据,在vue实例化之后
* created中已经可以拿到data中的数据了,但是dom还没有挂载,适合ajax请求和页面初始化
* beforeMount 页面挂载之前
* mounted 页面挂载成功,vue实例对象中有template参数选项,则将其作为模板编译成render函数,编译优先级render函数选项 > template选项
* beforeUpdate 页面更新之前
* updated 页面已更新成功
* destroyed 实例化销毁,用于解除绑定
* 处理 HTML 标记并构建 DOM 树,处理 CSS 标记并构建 CSSOM 树,将 DOM 与 CSSOM 合并成一个渲染树。根据渲染树来布局,以计算每个节点的几何信息,将各个节点绘制到屏幕上。



* [JavaScript 复杂判断的更优雅写法](https://juejin.im/post/5bdfef86e51d453bf8051bf8)(优)
* 一个对象的键只能是字符串或者Symbols,但一个Map的键可以是任意值。、
* 通过size属性很容易地得到一个Map的键值对个数,而对象的键值对个数只能手动确认。
* actions是Map对象时,[...actions]可以转换成数组
* 在Map中可以用正则类型作为key,这样就有了无限可能



Expand Down

0 comments on commit df656e8

Please sign in to comment.