@mic-rexjs/usecases-react
Version:
React-based solution for use usecases of Clean Architecture
19 lines (18 loc) • 684 B
JavaScript
import { Statuses } from '../../enums/Statuses';
import { useRef } from 'react';
export const useRuntimeEntity = (store, entityArg, contextEntity, statuses) => {
const prevEntityArgRef = useRef(entityArg);
const entityRootDisabled = (statuses & Statuses.EntityRootEnabled) !== Statuses.EntityRootEnabled;
if (entityRootDisabled) {
return contextEntity;
}
const isFunction = typeof entityArg === 'function';
const { current: prevEntityArg } = prevEntityArgRef;
switch (true) {
case isFunction:
case prevEntityArg === entityArg:
return store.value;
}
prevEntityArgRef.current = entityArg;
return entityArg;
};