react合成事件是什么,和原生事件的区别?
react合成事件是把事件绑定在root组件上,通过冒泡机制捕获, 然后将封装的event传递给函数处理,不是采用原生的event
react为什么需要合成事件?
- 减少事件频繁绑定销毁
- 兼容性把控
react setState是同步还是异步?
- 主要看是否命中batchUpdate机制
- 能命中的都是react可以管理的入口
- 正常使用是异步
- setTimeout、setInterval 等 原生事件绑定是同步
为什么有时react两次setState,只执行一次?
- 因为setState 是异步的
- 假设count=1;执行到setState({count:this.state.count + 1})是, this.state.count + 1已经被执行成2 作为参数传入了, 因为是异步执行,所以下一个相同的操作也被计算成了2
- 为什么在setState传入一个函数不会有这个问题, 问题函数里的this.state.cout 都还没执行到,等他执行了也就修改了state, 所有下一个相同的操作是在新的state基础上执行的
fiber有哪些优点,怎样做到的?
主要解决:当页面节点过多更新时, 需要大量的时间进行运算, 导致,页面交互卡顿
在reconcilier阶段进行组件渲染diff等操作时, 遇到用户一些操作时会中断当前事情,通过window.requestIdleCallback监听, 当浏览器事件完成后, 会回到当前被中断的组件中, 重新渲染, 这也会造成生命周期可能被执行多次