@antdp/antdp-ui
Version:
基于antd封装的组件
87 lines (85 loc) • 3.09 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard")["default"];
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
var _react = _interopRequireWildcard(require("react"));
var _antd = require("antd");
var _jsxRuntime = require("react/jsx-runtime");
var _excluded = ["onSend", "buttonProps", "countTime"];
var _this = void 0;
var InputCount = function InputCount(props) {
var onSend = props.onSend,
buttonProps = props.buttonProps,
countTime = props.countTime,
others = (0, _objectWithoutProperties2["default"])(props, _excluded);
// 默认倒计时时间
var DEFAULT_TIME = countTime ? countTime : 60;
var _useState = (0, _react.useState)(DEFAULT_TIME),
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
time = _useState2[0],
setTime = _useState2[1];
var _useState3 = (0, _react.useState)(false),
_useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
loading = _useState4[0],
setLoading = _useState4[1];
(0, _react.useEffect)(function () {
var timer = 0;
if (loading && time != 0) {
timer = setInterval(function () {
// 这时候的time由于闭包的原因,一直是0,所以这里不能用setNum(num-1)
setTime(function (n) {
if (n == 1) {
setLoading(false);
clearInterval(timer);
}
return n - 1;
});
}, 1000);
}
return function () {
// 组件销毁时,清除定时器
clearInterval(timer);
};
}, [loading]);
//短信验证
var send = function send(e) {
setTime(DEFAULT_TIME);
setLoading(true);
// 点击发送按钮,回调调用接口
onSend && onSend();
e.preventDefault();
};
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_react.Fragment, {
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
style: {
display: 'flex',
alignItems: 'center'
},
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_antd.Input, (0, _objectSpread2["default"])({
style: {
flex: 1,
transition: 'width .3s',
marginRight: 8
}
}, others)), /*#__PURE__*/(0, _jsxRuntime.jsx)(_antd.Button, (0, _objectSpread2["default"])((0, _objectSpread2["default"])({
style: {
display: 'block'
},
size: "middle",
type: "primary",
loading: loading,
onClick: send.bind(_this)
}, buttonProps), {}, {
children: loading ? time + '秒' : '发送验证'
}))]
})
});
};
var _default = exports["default"] = InputCount;
module.exports = exports.default;