数据抓取、代运营、合作项目、后台管理系统、gql 、企业微信TAPD、权限拦截、swagger useEffect 加载完成后执行,销毁的时候如果存在返回函数就会执行返回函数 、useState、useMemo计算属性,只有指定的值变化后才会更新,通常可以利用他减少组件更新频率
useMemo都是 useCallback 返回缓存的值
useMemo 缓存返回值
useCallback 缓存返回函数一些函数是没有必要被重新刷新的,此时就应该缓存起来
综合题
React和Vue有那些区别
- Vue通过Object.defineProperties 实现数据双向绑定,而React需要手动进行setState
- Vue提供了很多指令、方法 如:v-for v-if v-html等,而React主要还是使用js来控制。
- Vue主要采用传统的模板方式进行开发,React主要使用函数式编程。
Vue
vue的基本原理,双向绑定、diff算法、模版引擎具体讲一讲
if 和 for循环 哪个优先级最高,如何让性能最大化
- 答案在源码中 compiler/codegen/index.js
- 先进行了for循环比if判断更早

答:
- v-for优先于v-if被解析
- 如果同时出现,每次渲染都会先执行循环再判断条件,无论如何循环都不可避免,浪费了性能
- 要避免出现这种情况,则在外层嵌套template,在这一层进行v-if判断,然后在内部进行v-for循环
- 如果条件出现在循环内部,可通过计算属性提前过滤掉那些不需要显示的项
Vue组件data为什么必须是个函数而Vue的根实例则没有此限制?
- 源码中找答案:src\core\instance\state.js - initData()
- data必须是函数是为了多组件之间值相互不干扰。根实例只有一个,不存在多个因此不存在干扰问题
你知道vue中key的作用和工作原理吗?说说你对它的理解。
源码中找答案:src\core\vdom\patch.js - updateChildren()
答:
- key的作用主要是为了高效的更新虚拟DOM,其原理是vue在patch过程中通过key可以精准判断两个节点是否是同一个,从而避免频繁更新不同元素,使得整个patch过程更加高效,减少DOM操作量,提高性能。
- 另外,若不设置key还可能在列表更新时引发一些隐蔽的bug
- vue中在使用相同标签名元素的过渡切换时,也会使用到key属性,其目的也是为了让vue可以区分它们,否则vue只会替换其内部属性而不会触发过渡效果。
你了解哪些Vue性能优化方法?
- 路由懒加载
- keep-alive缓存页面
- 使用v-show复用DOM
- v-for 遍历避免同时使用 v-if
- 如果列表是纯粹的数据展示,不会有任何改变,就不需要做响应化,使用Object.freeze(xxx);冻结禁止监听
React
什么是虚拟DOM
虚拟 DOM (VDOM)是真实 DOM 在内存中的表示。UI 的表示形式保存在内存中,并与实际的 DOM 同步。这是一个发生在渲染函数被调用和元素在屏幕上显示之间的步骤,整个过程被称为调和。类组件和函数组件之间的区别是啥
- 类组件可以使用其他特性,如:state,生命周期钩子,this
函数组件比类组件性能更高,因为类组件需要实例化,而函数组件直接执行返回结果即可,为了性能考虑尽量使用函数组件
React 中 refs 干嘛用的?
state 和 props 区别是啥?
props和state是普通的 JS 对象。虽然它们都包含影响渲染输出的信息,但是它们在组件方面的功能是不同的。即
- state 是组件自己管理数据,控制自己的状态,可变;
- props 是外部传入的数据参数,不可变;
- 没有state的叫做无状态组件,有state的叫做有状态组件;
- 多用 props,少用 state,也就是多写无状态组件。
如何创建 refs
Refs 是使用 React.createRef() 创建的,并通过 ref 属性附加到 React 元素。在构造组件时,通常将 Refs 分配给实例属性,以便可以在整个组件中引用它们。什么是高阶组件?
- 高阶组件是接收一个组件并返回一个新的组件
高阶组件(HOC)是接受一个组件并返回一个新组件的函数。基本上,这是一个模式,是从 React 的组合特性中衍生出来的,称其为纯组件,因为它们可以接受任何动态提供的子组件,但不会修改或复制输入组件中的任何行为。
const EnhancedComponent = higherOrderComponent(WrappedComponent);
