taro-hooks
Version:
为 Taro 而设计的 Hooks Library
40 lines (39 loc) • 1.26 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.createUseInfoHook = void 0;
var core_1 = require("@taro-hooks/core");
var shared_1 = require("@taro-hooks/shared");
var tool_1 = require("../utils/tool");
/**
* a general generate info api hook, make direaction return, use undefined make fail
* @param {TCallback<T>} fn
* @returns {T}
*/
function createUseInfoHook(fn, defaultReturn) {
return function () {
var safeExcute = function safeExcute() {
try {
if (!tool_1.isProd) {
var _fn;
// dev mode will sync function will return a promise result
// @ts-ignore
var result = (_fn = fn()) == null ? void 0 : _fn.then == null ? void 0 : _fn.then(function (e) {
return e;
}, shared_1.log);
return (0, tool_1.typeOf)(result, 'Promise') && 'then' in result ? defaultReturn :
// @ts-ignore
result || fn();
}
// @ts-ignore
return fn();
} catch (e) {
(0, shared_1.logError)("[createUseInfoHook]: " + e.message + ". " + String(fn));
return defaultReturn;
}
};
return (0, core_1.useRef)(safeExcute()).current;
};
}
exports.createUseInfoHook = createUseInfoHook;
;