UNPKG

@td-design/rn-hooks

Version:

从ahooks里面抽取的一些在rn项目里可以使用的hooks。提高开发效率

77 lines (73 loc) 2.78 kB
'use strict'; var _tslib = require('../_virtual/_tslib.js'); var react = require('react'); var index = require('../useCountdown/index.js'); var index$1 = require('../useMemoizedFn/index.js'); /** * 用于发送手机验证码的 hook。 * @param props 参数 */ function useSms(_a) { var _this = this; var _b = _a.defaultLabel, defaultLabel = _b === void 0 ? '发送验证码' : _b, _c = _a.resendLabel, resendLabel = _c === void 0 ? '重新发送' : _c, _d = _a.count, count = _d === void 0 ? 60 : _d, onBefore = _a.onBefore, onSend = _a.onSend, onAfter = _a.onAfter, ref = _a.ref; var _e = index(count), currentCount = _e.count, start = _e.start; var _f = _tslib.__read(react.useState(''), 2), text = _f[0], setText = _f[1]; var _g = _tslib.__read(react.useState(false), 2), started = _g[0], setStarted = _g[1]; react.useEffect(function () { if (currentCount === 0) { onAfter === null || onAfter === void 0 ? void 0 : onAfter(); setStarted(false); } }, [currentCount]); react.useEffect(function () { if (!started) { setText(defaultLabel); } else if (currentCount !== 0) { setText("".concat(resendLabel, "(").concat(currentCount, "s)")); } else { setText(resendLabel); } }, [currentCount, defaultLabel, resendLabel]); /** * 发送验证码 */ var sendSms = function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } return _tslib.__awaiter(_this, void 0, void 0, function () { var validateResult; return _tslib.__generator(this, function (_a) { switch (_a.label) { case 0: validateResult = true; if (!onBefore) return [3 /*break*/, 2]; return [4 /*yield*/, onBefore()]; case 1: validateResult = _a.sent(); _a.label = 2; case 2: if (validateResult) { if (ref) { ref.current.focus(); } onSend.apply(void 0, _tslib.__spreadArray([], _tslib.__read(args), false)); // 开始倒计时 start(); setStarted(true); } return [2 /*return*/]; } }); }); }; return { text: text, disabled: started, sendSms: index$1(sendSms), }; } module.exports = useSms;