欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 锐评 > React面试

React面试

2025/11/11 6:03:22 来源:https://blog.csdn.net/vain_soloist/article/details/148678126  浏览:    关键词:React面试

react特性

jsx语法 xml和JS混合写在一起的格式

组件式开发

虚拟DOM提升更新修改dom元素的效率

单向数据绑定

常见的组件声明方式 函数式组件和类组件

函数组件 返回内容为渲染的内容
类组件 必须写render函数中返回需要渲染的内容

函数组件 useState()组件去管理状态
类组件 在类中定义state

useEffect

用途:模拟声明周期,处理一些状态变化的副作用,请求接口

为什么:

1保证函数式组件的核心原则:函数式组件应为纯函数,即相同输入可以产生相同的输出,直接在函数组件中去请求API产生不可预测性

useEffect中去调用API将副作用和渲染逻辑分离开,确保副作用在渲染结束后执行

2控制副作用执行的时机,避免不必要执行,如果把作用写在组件内,组件的每次渲染都会触发副作用,使用useEffect的依赖项数组控制时机

3避免阻塞渲染,useEffect中代码异步执行 不会阻塞渲染

4处理清理逻辑 在useEffect副作用会return 一个函数清理之前定义的定时器等变量

useRef 组件的生命周期中维护一个变量,绑定特定的一个dom元素

useContext 构建一个全局的上下文

生命周期

初始化阶段

constructor函数初始化state一些参数防抖节流的绑定

getDerivedStateFromProps 静态函数 传入props和State合成一个新的state

componentWillMount 接口需要预请求

componentDidMount

更新阶段

componentWillReceiveProps
props发生变化会执行

shouldComponentUpdate 拦截器 决定组件要不要更新

componentWillUpdate

getSnapShotBeforeUpdate 更新前的快照

componentDidUpdate 更新

销毁阶段

闭包定时器时间管理销毁
componentWillunmout

hooks

只能在外层函数中调用

在和react相关的函数中调用 组件 自定义hooks

为什么会有

1.组件之间复用状态逻辑困难 useState

2.类组件生命周期等问题useEffect

3.解决this复杂问题·

Fiber 17版本后引入的数据结构

本质为了使之前的stack reconciler 变为fiber reconciler

const FiberNode ={
tag 标记什么类型
key

构建复杂链表
}

各版本之间区别

16.8
stack reconciler 更多类写法

17
fiber reconciler 解决递归爆炸的问题1

在17版本时 外部批处理 在setTimeout内使用 同步更新 的

useEffect 异步调用 等主线程dom更新 JS执行完成 视图绘制完成后执行

useLayout时机是在dom更新之后,视图绘制完成之前这个时候可以更方便地修改dom元素

useInsertionEffect 时机更早 dom 更新前

HOC 高阶组件

逻辑复用

useRouter API如何使用useRouter进行动态路由加载

把router整体做一个配置

说说 stack reconciler 和 Fiber reconciler区别

遍历DOM树 递归遍历树本质上都是递归遍历
return child sibling 之间存在关系构成了不递归的遍历

1.单层遍历 不涉及跨层的对比

2.引入key值去遍历

React几种数据结构 4种类

1element 函数组件返回值 或者 类组件render函数的返回值

本质是大对象

2current fiber 表示当前数据状态的核心数据结构

3workInProgress fiber 状态更新完成后 切换成 current fiber

真实的DOM

react 的调和过程就是current fiber 虚拟dom 对比 生成 workinprogress fiber 的过程

React 更新流程

三个部分 beginwork complerework commitwork 略

闭包陷阱

两种 useState 闭包
useEffect闭包

定义:通过闭包获取到外部变量的值得,获取到旧的值

成因:1.回调函数或者setTimeOut()异步执行
2.useEffect

解法:
1.合理设置 依赖项
2.useRef() 在组件的整个生命周期都生效的变量
3.函数式更新

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词