UNPKG

@td-design/rn-hooks

Version:

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

49 lines (45 loc) 1.67 kB
'use strict'; var _tslib = require('../_virtual/_tslib.js'); var react = require('react'); var index = require('../utils/index.js'); function isAsyncGenerator(val) { return index.isFunction(val[Symbol.asyncIterator]); } function useAsyncEffect(effect, deps) { react.useEffect(function () { var e = effect(); var cancelled = false; function execute() { return _tslib.__awaiter(this, void 0, void 0, function () { var result; return _tslib.__generator(this, function (_a) { switch (_a.label) { case 0: if (!isAsyncGenerator(e)) return [3 /*break*/, 4]; _a.label = 1; case 1: return [4 /*yield*/, e.next()]; case 2: result = _a.sent(); if (result.done || cancelled) { return [3 /*break*/, 3]; } return [3 /*break*/, 1]; case 3: return [3 /*break*/, 6]; case 4: return [4 /*yield*/, e]; case 5: _a.sent(); _a.label = 6; case 6: return [2 /*return*/]; } }); }); } execute(); return function () { cancelled = true; }; // eslint-disable-next-line react-hooks/exhaustive-deps }, deps); } module.exports = useAsyncEffect;