2020-react常见面试题

以下是我个人遇到的面试题,先列题目,答案慢慢更新~

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参数为函数或对象的问题。_小贱贱的博客-CSDN博客_this.setstate参数

在原生dom事件中使用setState,以及在setTimeout中使用setState时,是同步的。

其他情况是异步的。

14.介绍一下diff算法。

 diff算法是对vdom和newVdom进行比较的过程,比较的规则:

  • 只比较同一层级,不跨级比较
  • tag不相同直接删掉重建,不再深度比较
  • tag和key都相同则认为是同一个节点,不再深度比较

15.什么是高阶组件?

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
React常见面试题包括但不限于以下几个方面: 1. React组件的生命周期:React组件的生命周期分为三个阶段,分别是挂载阶段、更新阶段和卸载阶段。在每个阶段,都有相应的生命周期方法可以被调用,比如componentDidMount、componentDidUpdate和componentWillUnmount等。 2. React的虚拟DOM和DOM diff算法:React通过使用虚拟DOM来提高性能。虚拟DOM是一个轻量级的JavaScript对象,它表示真实DOM的层次结构。当数据发生变化时,React会使用DOM diff算法来比较新旧虚拟DOM树的差异,并只更新需要变化的部分,从而避免了对整个DOM树进行重渲染。 3. React中的状态管理:React有多种状态管理的方式,最常用的是使用组件的state和props来管理状态。另外,还可以使用React的Context API、Redux、Mobx等来实现更灵活的状态管理。 4. React中的事件处理:在React中,可以通过给元素添加事件处理函数来处理用户的交互行为。常见的事件处理方式包括直接在JSX中绑定事件处理函数、使用类组件中的成员方法作为事件处理函数、使用React的Hooks中的useEffect来处理副作用等。 5. React的组件通信:React组件之间的通信可以通过props传递数据、使用React的Context API、使用全局状态管理工具等方式实现。另外,如果组件之间的通信比较复杂,还可以考虑使用消息订阅-发布模式或者事件总线来实现。 6. React的性能优化:React提供了一些性能优化的手段,比如使用shouldComponentUpdate来控制组件的更新、使用React的memo和useMemo来缓存计算结果、使用React的Fragment来减少不必要的DOM节点等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值