@slan-health/taro-vueuse
Version:
taro vue版本hooks
103 lines (102 loc) • 3.13 kB
JavaScript
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