20190506 前端面试整理

题目概览

  • css3 的新特性,h5 的新特性
  • 存储 localStorage 和 sessionStorage 的区别
  • js 的基本数据类型和引用类型
  • js 事件委托
  • js 动画和 css 动画的区别
  • 闭包缺点
  • 对 promise 的理解
  • new 做了什么样的事情
  • React 16.3 新的生命周期
  • react 新的 hooks
  • 移动端适配方案
  • 如何做跨域
  • antd如何按需加载组件

(小司 浙先)

js 的基本数据类型和引用类型

  • 基本:number、string、Boolean、undefined、null、Symbol
  • 引用:object、array、function

js 动画和 css 动画的区别

js 动画 requestAnimationFrame:

  • 优点:
    • 控制能力强,对于开始、暂停、回放、终止、取消等都是可以做的,可以在特定的位置添加回调函数或者事件绑定
    • 动画内容丰富,可以做复杂的动画
    • CSS3 动画具有兼容性问题,js 没有
  • 缺点:代码相对复杂

css 动画 @keyframes:

  • 优点:
    • 浏览器可以对动画进行优化,(1)浏览器使用类似于 requestAnimationFrame 的机制,把所有的 DOM 操作集中起来,在一次重绘或者回流中完成,重绘或者回流的时间间隔紧紧跟随浏览器的刷新频率,一般为每秒 60 帧,(2)使用硬盘加速,提高动画性能
    • 对于低版本的浏览器,自动降级
  • 缺点:
    • 运行过程中控制力弱,无法添加回调函数和事件绑定
    • 代码冗长

总结:如果只是简单的状态的切换,不用中间过程的控制,可以选择 CSS 动画;如果是很复杂的内容,需要控制中间状态,可以选择 js 动画更好。

new 做了什么样的事情

React 16.3 新的生命周期

  • getDerivedStateFromProps

    取代原有的 componentWillReceiveProps,当我们接收到新的属性想去修改我们 state 时调用

  • getSnapshotBeforeUpdate

    在 VDOM 的改动实施到真实 DOM 之前调用

React 弃用的生命周期

  • componentWillMount
  • componentWillReceiveProps
  • componentWillUpdate

V16.3 并未删除这三个生命周期,同时还为它们新增以 UNSAFE_ 前缀为别名的三个函数 UNSAFE_componentWillMount()、UNSAFE_componentWillReceiveProps()、UNSAFE_componentWillUpdate()。

在 16.4 版本给出警告将会弃用 componentWillMount()、componentWillReceiveProps()、componentWillUpdate() 三个函数

在 17 版本将会删除 componentWillMount()、componentWillReceiveProps()、componentWillUpdate() 这三个函数,会保留使用 UNSAFE_componentWillMount()、UNSAFE_componentWillReceiveProps()、UNSAFE_componentWillUpdate()

React 完整的生命周期

  • 创建阶段 Mounting

    • constructor

      作用:1. 使用 this.state 来初始化 state 2. 给事件处理函数绑定 this 3. super(props)保证能在构造函数中要使用 this.props

    • static getDerivedStateFromProps(nextProps, prevState)

      执行时间:当创建时、接收新的 props 时、setState 时、forceUpdate 时会执行这个方法

      使用场景:1. 无条件的根据 props 更新 state 2. 当 props 和 state 的不匹配情况更新 state

    • render

    • componentDidMount

      使用场景:1. 异步请求 ajax 2. 添加事件绑定(注意在 componentWillUnmount 中取消,以免造成内存泄漏)

  • 更新阶段

    • static getDerivedStateFromProps(nextProps, prevState)

    • shouldComponentUpdate

      执行时间:在接收新的 props 或新的 state 时,在渲染前会触发该方法。
      返回值:该方法通过返回 true 或者 false 来确定是否需要触发新的渲染
      使用场景:通常通过这个方法对 props 和 state 做比较,从而避免一些不必要的渲染

      PureComponent 的原理就是对 props 和 state 进行浅对比(shallow comparison),来判断是否触发渲染。

    • render

    • getSnapshotBeforeUpdate(prevProps, prevState)

      执行时间:在 render() 之后,componentDidUpdate() 之前调用

      返回值:称为一个快照(snapshot)

      作用:在真实的 DOM 更新之前获取一些需要的信息

      场景:在 getSnapShotBeforeUpdate 中获取滚动位置,然后作为参数传给 componentDidUpdate,就可以直接在渲染真实的 DOM 时就滚动到需要的位置。

    • componentDidUpdate(prevProps, prevState, snapshot)

      作用:可以使用 setState,触发 re-render

  • 卸载阶段

    • componentWillUnmount

      场景:1. 取消定时器 2. 取消事件绑定 3. 取消网络请求

  • 错误处理

    • componentDidCatch

      执行时间:任何子组件在渲染期间,生命周期方法中或者构造函数 constructor 发生错误时调用。

  • react 新的 hooks

猜你喜欢

转载自blog.csdn.net/m_review/article/details/89965222
今日推荐