最近的面试整理react
工作经验三年,投的是14-16k左右的岗位
高频题:
react高阶组件,hooks, 函数组件,redux数据流转过程(从接口到store到页面),pureComponent,react性能优化,生命周期顺序,react16新特性
webpack插件
是否自己写过部署脚本,服务器配置
git命令
npm插件
防抖节流,快速排序
es6特性,箭头函数,let const,手写promise实现原理
手写订阅发布模式原理
http缓存,http请求过程
rem自适应布局
flex布局
js继承,作用域,闭包
跨域,cors原理
react高阶组件:
- 高阶组件是一个函数,而不是组件
- 组件是把 props 转化成 UI,高阶组件是把一个组件转化成另一个组件
- 高阶组件的作用是复用代码
- 高阶组件对应设计模式里的装饰者模式
-------------------------------------------------------------------
组件分类:类组件,函数组件
类组件分为普通类组件(React.Component)以及纯类组件(React.PureComponent)
区别:
- 1、继承PureComponent时,不能再重写shouldComponentUpdate
- 2、React.PureComponent基于shouldComponentUpdate做了一些优化,通过prop和state的浅比较来实现shouldComponentUpdate,也就是说,如果是引用类型的数据,只会比较是不是同一个地址,而不会比较具体这个地址存的数据是否完全一致。
函数式组件
函数式组件与基于Class声明的组件比较
-
不需要声明类,可以避免大量的譬如extends或者constructor这样的代码
-
不需要显示声明this关键字,在ES6的类声明中往往需要将函数的this关键字绑定到当前作用域,而因为函数式声明的特性,我们不需要再强制绑定。
-
更佳的性能表现:因为函数式组件中并不需要进行生命周期的管理与状态管理,因此React并不需要进行某些特定的检查或者内存分配,从而保证了更好地性能表现。
-------------------------------------------------------------------
在post方法里返回dispatch和result, 通过dispatch保存payload和type到action,触发reduse,reduse读取到返回到result,保存在对应的state里
设计思想:
- Redux是将整个应用状态存储到到一个地方,称为store
- store里面保存一棵状态树(state tree)
- 组件可以派发(dispatch)行为(action)给store,而不是直接通知其它组件
- 其它组件可以通过订阅store中的状态(state)来刷新自己的视图
- 整个应用的 state 被储存在一棵 object tree 中,并且这个 object tree 只存在于唯一一个 store 中 State 是只读的,惟一改变 state 的方法就是触发 action,
- action是一个用于描述已发生事件的普通对象 使用纯函数来执行修改,为了描述action如何改变state tree ,你需要编写 reducers
- 单一数据源的设计让React的组件之间的通信更加方便,同时也便于状态的统一管理