8 .React 原理 9.真题
2020-04-16 11:11:57 3 举报
AI智能生成
react原理 真题
作者其他创作
大纲/内容
第8章 React 原理
8-1 React原理-考点串讲
React原理<br>
1. 大厂用React概率更高<br>2. React对开发人员要求更高<br>3. 大厂更偏爱考察原理
1. 函数式编程,不可变值<br>2. vdom和diff<br>3. JSX 本质<br>4. 合成事件<br>5. setState batchUpdate<br>6. 组件渲染过程
8-2 再次回顾不可变值
函数式编程
1. 一种编程范式,概念比较多<br>2. 纯函数<br>3. 不可变值<br>
回顾SCU和redux代码
8-3 vdom和diff是实现React的核心技术
回顾vdom和diff
1. h函数<br>2. vnode数据结构<br>3. patch函数
2.
diff
1. 只比较同一层级,不跨级比较<br>2. tag不相同,则直接删掉重建,不再深度比较<br>3. tag和key,两者都相同,则认为是相同节点,不再深度比较
1. Vue2.x Vue3.0 React 三者实现vdom的细节都不同<br>2. 核心概念和实现思路,都一样<br>3. 面试主要考察后者,不用全部掌握细节
8-4 JSX本质是什么
JSX本质
1. JSX等同于Vue模板<br>2. Vue模板不是html<br>3. JSX不是JS
1. React.createElement即h函数,返回vnode<br>2. 第一个参数,可能是组件,也可能是html tag<br>3. 组件名,首字母必须大写(React规定)
8-5 说一下React的合成事件机制
合成事件
1. 所有事件挂在到document上<br>2. event不是原生的,是SyntheticEvent合成事件对象<br>3. 和Vue事件不同,和DOM事件也不同
图示
为何要合成事件机制?
1. 更好的兼容性和跨平台<br>2. 挂载到document,减少内存消耗,避免频繁解绑<br>3.方便事件的统一管理(如事务机制)
8-6 说一下React的batchUpdate机制
1. 有时是异步(普通使用),有时是同步(setTimeout、DOM事件)<br>2. 有时合并(对象形式),有时不合并(函数形式)<br>3. 后者比较好理解(像Object.assign),主要讲解前者
核心要点
1. setState主流程<br>2. batchUpdate机制<br>3. transaction(事务)机制
setState主流程
isBatchUpdates机制
setState异步还是同步?
1. setState无所谓异步还是同步<br>2. 看是否能命中batchUpdate机制<br>3. 判断isBatchUpdates
哪些能命中batchUpdate机制
1. 生命周期(和它调用的函数)<br>2. React中注册的事件(和它调用的函数)<br>3. React可以'管理'的入口
哪些不能命中batchUpdate机制
1. setTimeout setInterval等(和它调用的函数)<br>2. 自定义的DOM事件(和它调用的函数)<br>3. React'管不到'的入口
8-7 简述React事务机制
transaction事务机制
8-8 说一下React组件渲染和更新的过程
组件渲染和更新过程
1. JSX如何渲染为页面<br>2. setState之后如何更新页面<br>3. 面试考察全流程
回顾知识点
1. 回顾Vue组件渲染和更新流程<br>2. 再次回顾JSX本质和vdom<br>3. 回顾dirtyComponents
回顾JSX本质和vdom<br>1. JSX 即createElement函数<br>2. 执行生成vnode<br>3. patch(elem,vnode)和patch(vnode,newVnode)
讲解内容
1. 组件渲染和更新过程<br>2. 更新的两个阶段<br>3. React fiber
组件渲染过程<br>1. props state<br>2. render() 生成vnode<br>3. patch(elem,vnode)
组件更新过程<br>1. setState(newState)-->dirtyComponent(可能有子组件)<br>2. render()生成newVnode<br>3. patch(vnode,newVnode)
8-9 React-fiber如何优化性能
更新的两个阶段
1. 上述patch被拆分为两个阶段<br>2. reconciliation阶段-执行diff算法,纯JS计算<br>3. commit阶段-将diff结果渲染DOM
可能会有性能问题
1. JS是单线程,且和DOM渲染共用一个线程<br>2. 当组件足够复杂,组件更新时计算和渲染都压力大<br>3. 同时再有DOM操作需求(动画、鼠标拖拽等),将卡顿<br>
解决方案fiber
1. 将reconciliation阶段进行任务拆分(commit无法拆分)<br>2. DPM需要渲染时暂停,空闲时恢复<br>3. window.requestIdleCallback
关于fiber
1. React内部运行机制,开发者体会不到<br>2. 了解背景和基本概念即可
小结
1. 组件渲染和更新过程<br>2. 更新的两个阶段 reconciliation commit<br>3. React fiber
8-10 React原理-考点总结和复习
React原理
1. 函数式编程<br>2. vdom和diff<br>3. JSX 本质<br>4. 合成事件<br>5. setState batchUpdate
函数式编程
1. 一种编程范式,概念比较多<br>2. 纯函数<br>3. 不可变值
JSX本质和vdom
1. JSX 即createElement函数<br>2. 执行生成vnode<br>3. patch(elem,vnode) patch(vnode,newVnode)
合成事件
1. 所有事件挂在到document上<br>2. event不是原生的,是SyntheticEvent合成事件对象<br>3. 和Vue事件不同,和DOM事件也不同
setState和batchUpdate
1. setState的表现(重要)和主流程<br>2. batchUpdate机制<br>3. transation(事务)机制
组件渲染和更新
1. 组件渲染和更新过程<br>2. 更新的两个阶段:reconciliation commit<br>3. React fiber
第9章 React 面试真题演练
1、组件之间如何通讯
1. 父子组件props<br>2. 自定义事件<br>3. Redux和Context
2、JSX本质是什么
1. createElement<br>2. 执行返回vnode<br>
3.、Context是什么?如何应用?
1. 父组件,向其下所有子孙组件传递信息<br>2. 如一些简单的公共信息:主题色、语言等<br>3. 复杂的公共信息,请用redux
4、shouldComponentUpdate用途
1. 性能优化<br>2. 配合‘不可变值’一起使用,否则会出错<br>
5、redux单项数据流
6、setState场景题
6、什么是纯函数
1. 返回一个新值,没有副作用(不会‘偷偷’修改其他值)<br>2. 重点:不可变值<br>3. 如arr1=arr.slice()
7、React组件生命周期<br>
1. 单组件生命周期<br>2.父子组件生命周期<br>3. 注意SCU
8、React发起ajax应该在哪个生命周期
1. 同Vue<br>2. componentDidMount
9、渲染列表,为何使用key
1. 同Vue。必须用key,且不能是index和random<br>2. diff算法中通过tag和key来判断,是否是sameNode<br>3. 减少渲染次数,提升渲染性能
10、函数组件和class组件的区别
1. 纯函数,输入props,输出JSX<br>2. 没有实例,没有生命周期,没有state<br>3. 不能扩展其他方法
11、什么是受控组件
1. 表单的值受state控制<br>2. 需要自行监听onChange,更新state<br>3. 对比非受控组件
12、何时使用异步组件
1. 同Vue<br>2. 加载大组件<br>3. 路由懒加载
13、多个组件有公共逻辑,如何抽离
1. 高阶组件 HOC<br>2. Render Props<br>3. mixin已被React废弃
14、redux如何进行异步请求
1. 使用异步action<br>2. 如redux-thunk
15. react-router如何配置懒加载
16、PureComponent有何区别
1. 实现了浅比较的shouldComponentUpdate<br>2. 性能优化<br>3. 但要结合不可变值使用
17、React事件和DOM事件的区别
1. 所有事件挂在到document上<br>2. event不是原生的,是SyntheticEvent<br>3. dispatchEvent
18、React性能优化
1. 渲染列表时加key<br>2. 自定义事件、DOM事件及时销毁<br>3. 合理使用异步组件<br>4. 减少函数bind this的次数<br>5. 合理使用SCU PureComponent和memo<br>6. 合理使用Immutable.js<br>7. webpack层面的优化(后面会讲)<br>8. 前端通用的性能优化,如图片懒加载
19、React和Vue的区别
相同点
1. 都支持组件化 <br>2. 都是数据驱动视图<br>3. 都是用vdom操作DOM<br>
区别
1. React使用JSX拥抱JS,Vue使用模板拥抱html<br>2. React函数式编程,Vue声明式编程<br>3. React更多需要自力更生,Vue把想要的都给你
0 条评论
下一页
为你推荐
查看更多