reactive-blocs
Version:
44 lines (43 loc) • 1.36 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.useValue = void 0;
const react_1 = require("react");
const isReactive = (field) => {
return field.isReactive;
};
function useValue(field, label) {
let initialValue = isReactive(field) ? field.value : undefined;
let value = undefined;
let setValue = null;
const subscription = (0, react_1.useMemo)(() => {
const subscription = field.subscribe((val) => {
if (setValue) {
setValue(val);
}
else {
initialValue = val;
}
});
return subscription;
}, []);
(0, react_1.useEffect)(() => () => subscription.unsubscribe(), []);
[value, setValue] = (0, react_1.useState)(initialValue);
return value;
}
exports.useValue = useValue;
// export function useExec<T, A = any>(exec: (args: A) => any, args?: A) {
// const argsRef = useRef<A>(null);
// useMemo(() => {
// if (args == undefined) {
// return;
// }
// if (isPlainObject(args)) {
// if(!argsRef.current || !compare(argsRef.current, args)) {
// exec(args);
// argsRef.current = args;
// }
// } else {
// exec(args);
// }
// }, [args, argsRef.current]);
// };