以下是我个人遇到的面试题,先列题目,答案慢慢更新~
1.react生命周期。
2.hooks和class的区别,为什么要用hooks?(hooks解决了哪些问题)
3.react-router的实现原理?有哪几种类型,分别有什么区别?
4.hashrouter是怎么实现路由跳转的?如果我直接改变URL跳转到另一个页面,描述一下过程。
5.解决地狱回调的方法。
6.介绍下promise。
7.promiseAll其中一个方法失败后,整个结果是失败还是成功?
答:失败
8.介绍一下redux。
9.redux执行的是浅比较还是深比较?
答:浅比较。
10.pureComponent执行的是浅比较还是深比较?
答:浅比较。
11.connect的原理。
12.介绍一下react最新的api和生命周期。
答:context api,createRef api,forwardRef api。
13.this.setState传对象和函数有什么区别,同步还是异步?
传入对象的情况,如果有多个setState同时处理一个变量,会进行一个合并处理,最终可能只执行了一次;而传入函数的情况,函数的入参(prevState,props)每次都能拿到最新的state值。(参考:React中对于this.setState参数为函数或对象的问题。_小贱贱的博客-优快云博客_this.setstate参数)
在原生dom事件中使用setState,以及在setTimeout中使用setState时,是同步的。
其他情况是异步的。
14.介绍一下diff算法。
diff算法是对vdom和newVdom进行比较的过程,比较的规则:
- 只比较同一层级,不跨级比较
- tag不相同直接删掉重建,不再深度比较
- tag和key都相同则认为是同一个节点,不再深度比较
15.什么是高阶组件?