informed
Version:
A lightweight framework and utility for building powerful forms in React applications
35 lines (30 loc) • 986 B
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var _rollupPluginBabelHelpers = require('../_virtual/_rollupPluginBabelHelpers.js');
var React = require('react');
var useEffectOnce = require('./useEffectOnce.js');
// TODO figure out if this is bad?
// https://github.com/facebook/react/issues/14543
function useStateWithGetter(initial) {
var ref = React.useRef();
var mounted = React.useRef(true);
var _useState = React.useState(initial),
_useState2 = _rollupPluginBabelHelpers.slicedToArray(_useState, 2),
state = _useState2[0],
setState = _useState2[1];
ref.current = state;
var set = function set(value) {
ref.current = value;
if (mounted.current) setState(value);
};
var get = function get() {
return ref.current;
};
useEffectOnce.useEffectOnce(function () {
return function () {
mounted.current = false;
};
});
return [state, set, get];
}
exports.useStateWithGetter = useStateWithGetter;