hooks版本的pureComponent


--- pureComponent的shouldeComponentUpdate里,實際是對props/state進行了一個淺比較

這里實現一個hook版本的pureComponent


import { useEffect, useRef } from 'react'
import { isEqual } from 'lodash'

export default function useCompareEffect(effect: React.EffectCallback, dependencies?: Object) {
  function deepCompareDependencies(value: any) {
    const ref = useRef()

    if (!Object.is(value, ref.current)) { // 淺比較
      // if (!isEqual(value, ref.current)) { // 如果需要,可用深比較
      ref.current = value
    }

    return ref.current
  }

  useEffect(effect, deepCompareDependencies(dependencies))
}



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM