useCustomCompareEffect
A modified useEffect hook that accepts a comparator which is used for comparison on dependencies instead of reference equality
Usage
Live Editor
function Demo() { const [person, setPerson] = useState({ name: "bob", id: 1 }); const [count, setCount] = useState(0); useCustomCompareEffect( () => { setCount(c => c + 1); }, [person], (prevDeps, nextDeps) => prevDeps[0].id === nextDeps[0].id, ); return ( <div> <button onClick={() => { setPerson({ name: "joey", id: 1 }); }} > Change Person Name </button> <button onClick={() => { setPerson({ name: "bob", id: 2 }); }} > Change Person Id </button> <p>useCustomCompareEffect with deep comparison: {count}</p> </div> ); };
Result
Loading...
API
useCustomCompareEffect
Returns
void
Arguments
Argument | Description | Type | DefaultValue |
---|---|---|---|
effect | effect callback | React.EffectCallback (Required) | - |
deps | deps | TDeps (Required) | - |
depsEqual | deps compare function | DepsEqualFnType<TDeps> (Required) | - |
DepsEqualFnType
export type DepsEqualFnType<TDeps extends DependencyList> = (prevDeps: TDeps, nextDeps: TDeps) => boolean;