最近的面试整理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,也就是说,如果是引用类型的数据,只会比较是不是同一个地址,而不会比较具体这个地址存的数据是否完全一致。

函数式组件

一个函数就是一个组件,return一份DOM解构
特点:
1.没有生命周期,也会被更新并挂载,但是没有生命周期函数
2.没有this(组件实例)
3.没有内部状态(state)
优点 :轻量,如果组件没有涉及到内部状态,只是渲染数据,用函数式组件,性能较好。

函数式组件与基于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的组件之间的通信更加方便,同时也便于状态的统一管理
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
posted @ 2019-09-11 16:27  RoseTying  阅读(291)  评论(0编辑  收藏  举报