useChanged.ts 408 B

1234567891011121314151617181920
  1. import { useEffect, useRef } from 'react'
  2. export function useChanged<T>(value: T): boolean {
  3. const prev = useRef<T>(null)
  4. const changed = prev.current !== value
  5. useEffect(() => {
  6. prev.current = value
  7. })
  8. return changed
  9. }
  10. export function useChangedSync<T>(value: T): boolean {
  11. const prev = useRef<T>(null)
  12. const changed = prev.current !== value
  13. prev.current = value
  14. return changed
  15. }