2020-10-20 09:07:42 +13:00
|
|
|
import { useRef, useEffect } from 'react';
|
|
|
|
|
|
2021-03-15 20:29:12 +13:00
|
|
|
/**
|
|
|
|
|
* Drop this in to a component
|
|
|
|
|
|
|
|
|
|
componentDidUpdate(prevProps, prevState) {
|
|
|
|
|
Object.entries(this.props).forEach(([key, val]) =>
|
|
|
|
|
prevProps[key] !== val && console.log(`Prop '${key}' changed`)
|
|
|
|
|
);
|
|
|
|
|
if (this.state) {
|
|
|
|
|
Object.entries(this.state).forEach(([key, val]) =>
|
|
|
|
|
prevState[key] !== val && console.log(`State '${key}' changed`)
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
*/
|
|
|
|
|
|
2020-10-20 09:07:42 +13:00
|
|
|
const useTraceUpdate = (props) => {
|
|
|
|
|
const prev = useRef(props);
|
|
|
|
|
useEffect(() => {
|
|
|
|
|
const changedProps = Object.entries(props).reduce((ps, [k, v]) => {
|
|
|
|
|
if (prev.current[k] !== v) {
|
|
|
|
|
ps[k] = [prev.current[k], v];
|
|
|
|
|
}
|
|
|
|
|
return ps;
|
|
|
|
|
}, {});
|
|
|
|
|
if (Object.keys(changedProps).length > 0) {
|
|
|
|
|
console.debug('Props changed:', changedProps);
|
|
|
|
|
}
|
|
|
|
|
prev.current = props;
|
|
|
|
|
});
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
export {
|
|
|
|
|
useTraceUpdate,
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
export default {
|
|
|
|
|
useTraceUpdate,
|
|
|
|
|
};
|