题目概览
- 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