informed
Version:
A lightweight framework and utility for building powerful forms in React applications
39 lines (30 loc) • 1.19 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var React = require('react');
var useInformed = require('./useInformed.js');
var useForceUpdate = require('./useForceUpdate.js');
var debug$1 = require('../debug.js');
var debug = debug$1.Debug('informed:useInformedState' + '\t');
/* ----------------------- useFieldState ----------------------- */
var useInformedState = function useInformedState(name) {
var _informed$getControll;
// Grab informed
var informed = useInformed.useInformed();
// Magic trick
var forceUpdate = useForceUpdate.useForceUpdate();
// Register for events on our field
React.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();
};
exports.useInformedState = useInformedState;