ahooks
Version:
react hooks library
37 lines (36 loc) • 1.31 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _react = require("react");
var _useLatest = _interopRequireDefault(require("../useLatest"));
var _utils = require("../utils");
function useEventTarget(options) {
var _ref = options || {},
initialValue = _ref.initialValue,
transformer = _ref.transformer;
var _useState = (0, _react.useState)(initialValue),
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
value = _useState2[0],
setValue = _useState2[1];
var transformerRef = (0, _useLatest["default"])(transformer);
var reset = (0, _react.useCallback)(function () {
return setValue(initialValue);
}, []);
var onChange = (0, _react.useCallback)(function (e) {
var _value = e.target.value;
if ((0, _utils.isFunction)(transformerRef.current)) {
return setValue(transformerRef.current(_value));
}
// no transformer => U and T should be the same
return setValue(_value);
}, []);
return [value, {
onChange: onChange,
reset: reset
}];
}
var _default = exports["default"] = useEventTarget;