react重点
1、react 父组件怎么调用子组件的方法
函数组件使用 forwardRef+useImperativeHandle:子组件通过useImperativeHandle暴露方法,父组件通过ref调用
2、有用过worker吗
Web Worker用于在后台线程执行耗时操作,避免阻塞UI渲染。典型应用场景包括:
复杂计算(如图像处理)
大数据量排序/过滤
保持页面响应性MCP_3
3、有用过那些打包工具
webpack roolup vite
4、有写过webpack插件么
编写插件需要理解Webpack的compiler和compilation钩子。典型结构:
6、原型和原型链
原型:每个函数创建的prototype对象
原型链:对象通过__proto__链接形成的继承链条
访问属性时沿原型链向上查找MCP_3]^
7、类的静态方法和原型方法有啥区别,访问方式有什么不同
通过类名访问Class.method() ,,
通过实例访问instance.method()
8、有用过canvas么,那些2d的动画库。
9、移动端适配,em rem vw和vh的区别
10、移动端安卓和ios 兼容上有哪些不一样
点击延迟:iOS需要touch-action优化
滚动回弹:iOS特有的弹性滚动效果
输入框聚焦:iOS键盘弹出行为不同
日期选择器:各系统原生控件样式差异大
安全区域:iOS刘海屏需要viewport-fit适配MCP_3]^
11、react useEffect 依赖项数组为空 或者不写数组有啥区别
空数组[]:仅在挂载时执行一次,卸载时清理
不传数组:每次渲染后都会执行
含依赖项:依赖变化时执行MCP_3]^
12、react合成事件原理。
事件委托:所有事件委托到document处理
统一封装:对原生事件进行跨浏览器包装
性能优化:使用事件池复用事件对象
异步处理:批量更新事件处理MCP_3]^
什么是React事件,什么是原生事件?两者的区别在哪儿?
React 事件: React 事件是经过封装和合成的,以保证在不同浏览器上的一致性。在使用 React 中的事件处理时,你会给 JSX 元素添加事件处理函数,比如 onClick、onChange 等,然后在事件处理函数中处理相应的逻辑。React 事件的处理方式提供了一定程度的抽象,使得开发者可以更加方便地处理事件和跨浏览器的兼容性。
原生事件是指由浏览器原生提供的事件,如 click、change、mouseover 等。在传统的 Web 开发中,我们通过 JavaScript 直接操作 DOM 元素并为其绑定原生事件处理程序来实现交互行为。
合成事件系统:React 事件是经过合成的,React 通过事件委派(event delegation)的方式来管理事件,而不是直接将事件绑定到每个 DOM 元素上。这种方式可以提高性能,同时减少内存占用。
跨浏览器兼容性:React 事件处理封装了底层的浏览器差异,使得开发者无需关心不同浏览器的事件兼容性问题。
事件命名:React 使用驼峰式命名来定义事件名,如 onClick、onChange,而原生事件则使用全小写的方式,如 click、change。
React 中的事件委派是指 React 将事件处理逻辑委托给组件的共同祖先(根组件),而不是直接在每个组件上添加事件监听器。这意味着 React 在整个组件树中只添加了一个事件监听器,而不是每个组件都有自己的事件监听器。
当用户触发事件时,React 会在 DOM 树中找到最近的共同祖先,并在该节点上触发事件处理函数。然后,React 会使用事件冒泡(event bubbling)的机制将事件传播到组件树中的每个组件,并调用相应的事件处理函数。
React 事件委派的优点包括:
性能优化:减少了事件监听器的数量,提高了性能。相比每个组件都添加事件监听器,只有一个共同祖先添加事件监听器的方式更加高效。
简化事件管理:不需要为每个组件都添加事件监听器,减少了事件管理的复杂性。当组件被添加、移除或更新时,不需要手动管理事件监听器。
更少的内存占用:只有一个事件监听器,减少了内存占用。
15、webpack 公布变量 html访问
1、使用 htmlwebpackPlugin
2、环境变量注入
3、DefinePlugin全局变量
13、usecontext,有什么作用和缺点
优点:
跨组件层级共享状态
避免prop drilling
缺点:
状态更新会导致所有消费者重新渲染
不适合高频更新的场景MCP_3]^
14、webpack 怎么配置多入口。
pages属性
5、react组件逻辑复用有哪些方式。
React组件逻辑复用
自定义Hooks:提取通用逻辑为可复用函数
HOC高阶组件:通过组件包装增强功能
Render Props:通过函数prop共享代码
Context API:跨层级状态共享MCP_3]^
1、react性能优化
1.1、useMemo
1.2、useCallback
useLayoutEffect会阻塞浏览器渲染,useEffect不会