UNPKG

@slan-health/taro-vueuse

Version:

taro vue版本hooks

103 lines (102 loc) 3.13 kB
import { useRouter as useRouter$1, navigateBackMiniProgram, navigateBack, navigateToMiniProgram, navigateTo, redirectTo, reLaunch, switchTab } from "@tarojs/taro"; import { stringify } from "../node_modules/.pnpm/querystring@0.2.1/node_modules/querystring/index.js"; import { typeOf } from "../utils/tool.js"; function stringfiyUrl(url, options) { let stringfiyUrl2 = url; if (options && typeof options === "object") { const hasQuery = stringfiyUrl2.includes("?"); stringfiyUrl2 += (hasQuery ? "&" : "?") + stringify(options); } return stringfiyUrl2; } function useRouter() { const router = useRouter$1(); const switchTabSync = (url, options) => { return new Promise((resolve, reject) => { try { url = stringfiyUrl(url, options); switchTab({ url, success: resolve, fail: reject }).catch(reject); } catch (e) { reject(e); } }); }; const relaunchSync = (url, options) => { return new Promise((resolve, reject) => { try { url = stringfiyUrl(url, options); reLaunch({ url, success: resolve, fail: reject }).catch(reject); } catch (e) { reject(e); } }); }; const redirectToSync = (url, options) => { return new Promise((resolve, reject) => { try { url = stringfiyUrl(url, options); redirectTo({ url, success: resolve, fail: reject }).catch(reject); } catch (e) { reject(e); } }); }; const navigateToSync = (urlOrMark, options) => { return new Promise((resolve, reject) => { try { const { appId } = options || {}; if (appId && urlOrMark) { navigateToMiniProgram({ appId, path: options == null ? void 0 : options.path, extraData: options == null ? void 0 : options.extraData, envVersion: options == null ? void 0 : options.envVersion, shortLink: options == null ? void 0 : options.shortLink, success: resolve, fail: reject }).catch(reject); } else if (typeOf(urlOrMark, "String")) { urlOrMark = stringfiyUrl(urlOrMark, options); navigateTo({ url: urlOrMark, success: resolve, fail: reject }).catch(reject); } } catch (e) { reject(e); } }); }; const navigateBackSync = (delta, extraData) => { return new Promise((resolve, reject) => { try { if (typeOf(delta, "Boolean") && delta) { navigateBackMiniProgram({ ...extraData ? { extraData } : {}, success: resolve, fail: reject }).catch(reject); } else { navigateBack({ delta, success: resolve, fail: reject }).catch(reject); } } catch (e) { reject(e); } }); }; return [ router, { switchTab: switchTabSync, relaunch: relaunchSync, redirectTo: redirectToSync, navigateTo: navigateToSync, navigateBack: navigateBackSync } ]; } export { useRouter as default }; //# sourceMappingURL=index.js.map