@td-design/rn-hooks
Version:
从ahooks里面抽取的一些在rn项目里可以使用的hooks。提高开发效率
30 lines (27 loc) • 1 kB
JavaScript
import { __assign } from '../_virtual/_tslib.js';
import { useRef, useEffect } from 'react';
/**
* 帮助开发者排查是那个属性改变导致了组件的 rerender。
*/
function useWhyDidYouUpdate(componentName, props) {
var prevProps = useRef({});
useEffect(function () {
if (prevProps.current) {
var allKeys = Object.keys(__assign(__assign({}, prevProps.current), props));
var changedProps_1 = {};
allKeys.forEach(function (key) {
if (prevProps.current[key] !== props[key]) {
changedProps_1[key] = {
from: prevProps.current[key],
to: props[key],
};
}
});
if (Object.keys(changedProps_1).length) {
console.log('[why-did-you-update]', componentName, changedProps_1);
}
}
prevProps.current = props;
});
}
export { useWhyDidYouUpdate as default };