informed
Version:
A lightweight framework and utility for building powerful forms in React applications
35 lines (28 loc) • 1.06 kB
JavaScript
import { useEffect } from 'react';
import { useInformed } from './useInformed.js';
import { useForceUpdate } from './useForceUpdate.js';
import { Debug } from '../debug.js';
var debug = Debug('informed:useInformedState' + '\t');
/* ----------------------- useFieldState ----------------------- */
var useInformedState = function useInformedState(name) {
var _informed$getControll;
// Grab informed
var informed = useInformed();
// Magic trick
var forceUpdate = useForceUpdate();
// Register for events on our field
useEffect(function () {
var listener = function listener(n) {
debug('Updating', n);
forceUpdate();
};
informed.emitter.on(name, listener);
// When name changes we always force an update!
forceUpdate();
return function () {
informed.emitter.removeListener(name, listener);
};
}, [name]);
return (_informed$getControll = informed.getController(name)) === null || _informed$getControll === void 0 ? void 0 : _informed$getControll.getFormState();
};
export { useInformedState };