useDeepEqualMemo hook implemented

This commit is contained in:
nklhrstv 2020-03-22 00:04:00 +02:00
parent 9935f38987
commit e13857d646
2 changed files with 16 additions and 0 deletions

View file

@ -24,6 +24,7 @@ const useAnimationFrame = require('./useAnimationFrame');
const useBinaryState = require('./useBinaryState');
const useCoreEvent = require('./useCoreEvent');
const useDeepEqualEffect = require('./useDeepEqualEffect');
const useDeepEqualMemo = require('./useDeepEqualMemo');
const useDeepEqualState = require('./useDeepEqualState');
const useFullscreen = require('./useFullscreen');
const useInLibrary = require('./useInLibrary');
@ -60,6 +61,7 @@ module.exports = {
useBinaryState,
useCoreEvent,
useDeepEqualEffect,
useDeepEqualMemo,
useDeepEqualState,
useFullscreen,
useInLibrary,

View file

@ -0,0 +1,14 @@
const React = require('react');
const isEqual = require('lodash.isequal');
const useDeepEqualMemo = (cb, deps) => {
const valueRef = React.useRef(cb());
const prevDepsRef = React.useRef(deps);
if (!isEqual(prevDepsRef.current, deps)) {
valueRef.current = cb();
prevDepsRef.current = deps;
}
return valueRef.current;
};
module.exports = useDeepEqualMemo;