Skip to content

Instantly share code, notes, and snippets.

@danedavid
Created June 19, 2020 17:38
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save danedavid/5fcfe154bb5c267e32bd2df84bc3e93f to your computer and use it in GitHub Desktop.
Save danedavid/5fcfe154bb5c267e32bd2df84bc3e93f to your computer and use it in GitHub Desktop.
Optimized version of usePrevValues
usePrevValues(
useMemo(() => ({
count,
upperCount
}), [count, upperCount]),
useCallback(prevValues => {
console.log("callback invoked");
if (prevValues.count + 1 === count) {
console.log("inner done");
}
if (prevValues.upperCount + 1 === upperCount) {
console.log("outer done");
}
}, [count, upperCount])
);
const usePrevValues = (value, callback) => {
const prevValues = useRef(value);
useEffect(() => {
callback(prevValues.current);
return () => (prevValues.current = value);
}, [value, callback]);
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment