effect
useEffect
DOM 更新完成后执行某些副作用操作,如数据获取,设置订阅以及手动更改 React 组件中的 DOM 等 有 componentDidMount,componentDidUpdate 和 componentWillUnmount 的功能)
useCallback 和 useMemo
相同:useCallback 和 useMemo 都是性能优化的手段
,类似于类组件中的 shouldComponentUpdate,在子组件中使用 shouldComponentUpdate
, 判定该组件的 props 和 state 是否有变化,从而避免每次父组件 render 时都去重新渲染子组件
。
区别:useCallback 和 useMemo 的区别是useCallback返回一个函数
,当把它返回的这个函数作为子组件
使用时,可以避免每次父组件更新时都重新渲染这个子组件.useMemo 返回的的是一个值,用于避免在每次渲染时都进行高开销的计算。
useLayoutEffect 和 useEffect 的区别
useEffect 是异步
执行的,而 useLayoutEffect 是同步
执行的。
useEffect 的执行时机是浏览器完成渲染之后
,而 useLayoutEffect 的执行时机是浏览器把内容真正渲染到界面之前
,和 componentDidMount 等价
。
Component 还是 PureComponent
PureComponent 有一个 shouldComponentUpdate 方法,当 props 或者 state 改变时,PureComponent 将对 props 和 state 进行浅比较。