mirror of
https://github.com/Stremio/stremio-web.git
synced 2026-04-21 03:22:11 +00:00
call cb in useDeepEqualMemo only when needed
This commit is contained in:
parent
5049cee10d
commit
21b1da7664
1 changed files with 6 additions and 2 deletions
|
|
@ -4,12 +4,16 @@ const React = require('react');
|
||||||
const isEqual = require('lodash.isequal');
|
const isEqual = require('lodash.isequal');
|
||||||
|
|
||||||
const useDeepEqualMemo = (cb, deps) => {
|
const useDeepEqualMemo = (cb, deps) => {
|
||||||
const valueRef = React.useRef(cb());
|
const valueRef = React.useRef();
|
||||||
|
const mountedRef = React.useRef(false);
|
||||||
const prevDepsRef = React.useRef(deps);
|
const prevDepsRef = React.useRef(deps);
|
||||||
if (!isEqual(prevDepsRef.current, deps)) {
|
if (!mountedRef.current || !isEqual(prevDepsRef.current, deps)) {
|
||||||
valueRef.current = cb();
|
valueRef.current = cb();
|
||||||
prevDepsRef.current = deps;
|
prevDepsRef.current = deps;
|
||||||
}
|
}
|
||||||
|
React.useLayoutEffect(() => {
|
||||||
|
mountedRef.current = true;
|
||||||
|
}, []);
|
||||||
return valueRef.current;
|
return valueRef.current;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue