@lesnoypudge/utils-react
Version:
lesnoypudge's utils-react
25 lines (24 loc) • 866 B
JavaScript
import { useContextSelector as useContextSelector$1 } from "@fluentui/react-context-selector";
import { useFunction } from "../../../../hooks/useFunction/useFunction.js";
import { useContext, useRef } from "react";
const EMPTY_VALUE = {};
const refEqual = (a, b) => {
return a === b;
};
const useContextSelector = (context, selector, equalityFn = refEqual) => {
const contextValue = useContext(context);
const prevSelectedRef = useRef(EMPTY_VALUE);
const stableSelector = useFunction(() => {
const selected = selector(contextValue.value.current);
if (equalityFn(selected, prevSelectedRef.current)) {
return prevSelectedRef.current;
}
prevSelectedRef.current = selected;
return selected;
});
return useContextSelector$1(context, stableSelector);
};
export {
useContextSelector
};
//# sourceMappingURL=useContextSelector.js.map