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