欢迎光临散文网 会员登陆 & 注册

千锋教育web前端高频面试题视频教程,kerwin大话前端面试秘籍(附答案)

2023-07-17 23:26 作者:小八-白不老  | 我要投稿

react高频面试题

  1. 类组件和函数式组件的区别
  • 语法上:函数式组件返回一个jsx元素,类组件是Es6语法糖class,继承component这个类
  • 类组件有生命周期,函数式组件没有生命周期,借用useEffect模拟生命周期
  • 类组件通过state 和setstate进行状态管理,函数组件使用useState
  • 类组件能够捕获到最新的值,this可以获取到最新的props参数保存在内存当中,函数式组件是通过闭包来构建的,无法从外面访问到,也无法在外面修改。

2.react事件绑定的原理

给document加对应的函数,创建listenerBank,

触发时调用调用分发函数dispatchEvent,把d当前对应的所有回调函数都加到listenerBank中,在listenerBank根据key值查找事件回调并合成到event中

最后进行批处理,按照冒泡排序来的

3.setState缺点

异步更新:在调用setState时不会立即更新,会先进行合并再更新,为了提高性能。

重复渲染:多次调用setState会重新渲染考虑使用useReducer或其他状态管理库

性能问题:setState会重新渲染整个组件,即时只修改了部分状态,使用react.memo进行优化。

setState每次传入的是一个新的状态对象,不是直接修改原来的状态,大量数据时修改时,会有一定的开销。

由于setState是一步的机制,在修改时依赖state,一般会使用回调函数作为参数更新state值

4.state和props的区别

props是外部传过来的数据,父传子不可以在组件内部修改,要通过父组件修改

state是内部的状态可以通过setState修改

5.虚拟dom的优劣,实现原理

虚拟dom是js对象模拟的dom树,相当于利用diff算法避免不必要的更新,一次性修改需要更改的部分,首次渲染慢,

虚拟dom的组成:type:元素的类型可以是原生的html也可以是自定义的组件,key:虚拟dom唯一的标识,ref:访问原生的Dom节点

props:属性

6.diff算法key

tree diff 同层级比较

component diff 通过id同组件对比

element diff 同元素对比

7.react组件通信如何实现

父传子props

子传父回调函数+props

Context上下文

redux状态管理action 改变state

8.react 中的refs的作用

ref获取到实例和Dom元素






千锋教育web前端高频面试题视频教程,kerwin大话前端面试秘籍(附答案)的评论 (共 条)

分享到微博请遵守国家法律