taro-hooks
Version:
为 Taro 而设计的 Hooks Library
81 lines • 3.22 kB
JavaScript
var _excluded = ["params"];
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
import { useRouter as useTaroRouter, switchTab as switchTaroTab, reLaunch, redirectTo, navigateTo, navigateBack, navigateToMiniProgram, navigateBackMiniProgram, openEmbeddedMiniProgram, exitMiniProgram, preload } from '@tarojs/taro';
import { useRef } from '@taro-hooks/core';
import useFrom from '../useFrom';
import usePromise from '../usePromise';
import usePage from '../usePage';
import { stringfiyUrl } from '../utils/tool';
function useRouter() {
var router = useRef(useTaroRouter());
var from = useFrom();
var _usePage = usePage(),
pageInstance = _usePage[1].pageInstance;
var navigateToAsync = usePromise(navigateTo);
var navigateToMiniProgramAsync = usePromise(navigateToMiniProgram);
var openEmbeddedMiniProgramAsync = usePromise(openEmbeddedMiniProgram);
var switchTabAsync = usePromise(switchTaroTab);
var relaunchAsync = usePromise(reLaunch);
var redirectToAsync = usePromise(redirectTo);
var navigateBackAsync = usePromise(navigateBack);
var navigateBackMiniProgramAsync = usePromise(navigateBackMiniProgram);
var exitMiniProgramAsync = usePromise(exitMiniProgram);
var navigate = function navigate(url, payload, mini, embedded) {
if (mini) {
var _payload$params = payload.params,
params = _payload$params === void 0 ? {} : _payload$params,
extendsPayload = _objectWithoutPropertiesLoose(payload, _excluded);
var _navigateURI = stringfiyUrl(url, params);
var options = _extends({
path: _navigateURI
}, extendsPayload);
return embedded ? openEmbeddedMiniProgramAsync(options) : navigateToMiniProgramAsync(options);
}
var navigateURI = stringfiyUrl(url, payload);
return navigateToAsync({
url: navigateURI
});
};
var switchTab = function switchTab(url) {
return switchTabAsync({
url: url
});
};
var relaunch = function relaunch(url, payload) {
var navigateURI = stringfiyUrl(url, payload);
return relaunchAsync({
url: navigateURI
});
};
var redirect = function redirect(url, payload) {
var navigateURI = stringfiyUrl(url, payload);
return redirectToAsync({
url: navigateURI
});
};
var back = function back(payload, mini) {
if (!mini) {
return navigateBackAsync({
delta: payload || 1
});
}
return navigateBackMiniProgramAsync({
extraData: payload || {}
});
};
var exit = exitMiniProgramAsync;
return [_extends({}, router.current, {
from: from,
preloadData: pageInstance.preloadData
}), {
navigate: navigate,
switchTab: switchTab,
relaunch: relaunch,
redirect: redirect,
back: back,
exit: exit,
preload: preload
}];
}
export default useRouter;