use-deep-compare-effect.ts 403 B

12345678910111213141516
  1. import { useEffect, useRef } from 'react'
  2. import _ from 'lodash'
  3. export default function useDeepCompareEffect<T>(
  4. callback: () => void,
  5. dependencies: T[]
  6. ) {
  7. const ref = useRef<T[]>()
  8. return useEffect(() => {
  9. if (_.isEqual(dependencies, ref.current)) {
  10. return
  11. }
  12. ref.current = dependencies
  13. callback()
  14. }, dependencies) // eslint-disable-line react-hooks/exhaustive-deps
  15. }