Files
Iris/src/js/util/debug.js

41 lines
891 B
JavaScript
Raw Normal View History

import { useRef, useEffect } from 'react';
/**
* 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`)
);
}
}
*/
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,
};