面试题每日五问,Day1

159 阅读1分钟

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监听, 当浏览器事件完成后, 会回到当前被中断的组件中, 重新渲染, 这也会造成生命周期可能被执行多次