Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | import { useRef, useEffect } from "react"; // Use to determine why a component rerendered // By supplying an object of prop/state values to track // e.g. useTraceUpdate({id, name, children}) export const useTraceUpdate = ( props: Record<string, unknown>, prefix?: string ) => { const prev = useRef(props); useEffect(() => { const changedProps = Object.entries(props).reduce((acc, [key, value]) => { Iif (prev.current[key] !== value) { acc[key] = [prev.current[key], value]; } return acc; }, {} as Record<string, unknown>); Iif (Object.keys(changedProps).length > 0) { console.log((prefix ?? "") + "Changed props:", changedProps); } prev.current = props; }); }; |