taro-hooks
Version:
为 Taro 而设计的 Hooks Library
87 lines (86 loc) • 3.55 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; }
Object.defineProperty(exports, "__esModule", {
value: true
});
var tslib_1 = require("tslib");
var taro_1 = require("@tarojs/taro");
var core_1 = require("@taro-hooks/core");
var useFrom_1 = tslib_1.__importDefault(require("../useFrom"));
var usePromise_1 = tslib_1.__importDefault(require("../usePromise"));
var usePage_1 = tslib_1.__importDefault(require("../usePage"));
var tool_1 = require("../utils/tool");
function useRouter() {
var router = (0, core_1.useRef)((0, taro_1.useRouter)());
var from = (0, useFrom_1["default"])();
var _ref = (0, usePage_1["default"])(),
pageInstance = _ref[1].pageInstance;
var navigateToAsync = (0, usePromise_1["default"])(taro_1.navigateTo);
var navigateToMiniProgramAsync = (0, usePromise_1["default"])(taro_1.navigateToMiniProgram);
var openEmbeddedMiniProgramAsync = (0, usePromise_1["default"])(taro_1.openEmbeddedMiniProgram);
var switchTabAsync = (0, usePromise_1["default"])(taro_1.switchTab);
var relaunchAsync = (0, usePromise_1["default"])(taro_1.reLaunch);
var redirectToAsync = (0, usePromise_1["default"])(taro_1.redirectTo);
var navigateBackAsync = (0, usePromise_1["default"])(taro_1.navigateBack);
var navigateBackMiniProgramAsync = (0, usePromise_1["default"])(taro_1.navigateBackMiniProgram);
var exitMiniProgramAsync = (0, usePromise_1["default"])(taro_1.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 = (0, tool_1.stringfiyUrl)(url, params);
var options = _extends({
path: _navigateURI
}, extendsPayload);
return embedded ? openEmbeddedMiniProgramAsync(options) : navigateToMiniProgramAsync(options);
}
var navigateURI = (0, tool_1.stringfiyUrl)(url, payload);
return navigateToAsync({
url: navigateURI
});
};
var switchTab = function switchTab(url) {
return switchTabAsync({
url: url
});
};
var relaunch = function relaunch(url, payload) {
var navigateURI = (0, tool_1.stringfiyUrl)(url, payload);
return relaunchAsync({
url: navigateURI
});
};
var redirect = function redirect(url, payload) {
var navigateURI = (0, tool_1.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: taro_1.preload
}];
}
exports["default"] = useRouter;
;