@helenejs/react
Version:
Real-time Web Apps for Node.js
26 lines • 1.08 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.useLastChangedTimestamp = useLastChangedTimestamp;
exports.useObject = useObject;
const react_1 = require("react");
const isEqual_1 = __importDefault(require("lodash/isEqual"));
const useCreation_1 = __importDefault(require("ahooks/lib/useCreation"));
function useLastChangedTimestamp(obj) {
const [timestamp, setTimestamp] = (0, react_1.useState)(Date.now());
const previousObj = (0, react_1.useRef)(obj);
(0, react_1.useEffect)(() => {
if (!(0, isEqual_1.default)(previousObj.current, obj)) {
previousObj.current = obj;
setTimestamp(Date.now());
}
}, [obj]);
return timestamp;
}
function useObject(currentObject) {
const timestamp = useLastChangedTimestamp(currentObject);
return (0, useCreation_1.default)(() => currentObject, [timestamp]);
}
//# sourceMappingURL=use-object.js.map