add useWhatsChanged

This commit is contained in:
Fedor Katurov 2023-06-02 17:15:04 +06:00
parent 42098fc50a
commit cdb1309a81
2 changed files with 33 additions and 0 deletions

View file

@ -0,0 +1,30 @@
```typescript
import { useEffect, useRef } from 'react';
/** Pass dictionary of `props` as argument and it will
* tell you, which one changed after rerender.
* Use `prefix` to distinguish props of different components.
*/
// eslint-disable-next-line import/no-unused-modules
export const useWhatsChanged = (
props: Record<string, unknown>,
prefix = '',
) => {
const prevProps = useRef(props);
useEffect(() => {
Object.entries(props).forEach(([key, value]) => {
if (
!Object.prototype.hasOwnProperty.call(prevProps.current, key) ||
prevProps.current[key] !== value
) {
// eslint-disable-next-line no-console
console.log(`${prefix} ${key} has changed`);
}
});
prevProps.current = props;
}, [props, prefix]);
};
```

View file

@ -0,0 +1,3 @@
```shell
for file in /proc/*/status ; do awk '/VmSwap|Name/{printf $2 " " $3}END{ print ""}' $file; done | sort -k 2 -n -r | less
```