stremio-web/src/common/useDeepEqualMemo.js

20 lines
585 B
JavaScript

// Copyright (C) 2017-2020 Smart code 203358507
const React = require('react');
const isEqual = require('lodash.isequal');
const useDeepEqualMemo = (cb, deps) => {
const valueRef = React.useRef();
const mountedRef = React.useRef(false);
const prevDepsRef = React.useRef(deps);
if (!mountedRef.current || !isEqual(prevDepsRef.current, deps)) {
valueRef.current = cb();
prevDepsRef.current = deps;
}
React.useLayoutEffect(() => {
mountedRef.current = true;
}, []);
return valueRef.current;
};
module.exports = useDeepEqualMemo;