taro-hooks
Version:
为 Taro 而设计的 Hooks Library
35 lines (34 loc) • 1.36 kB
TypeScript
import Taro, { preload } from '@tarojs/taro';
import type { RouterInfo } from '@tarojs/taro';
import useFrom from '../useFrom';
import type { PromiseAction, PromiseParamsAction, RecordData, PromiseWithoutOptionAction } from '../type';
export type RouteOption<R = string | RecordData> = (url: string, payload?: R, mini?: boolean, embedded?: boolean) => void;
export type RouteBaseOption = {
url: string;
};
export type RouteOptionWithParams<R, S = undefined> = R & {
params: S;
};
export type SwitchTab = PromiseAction<string>;
export type RouteBackOption = (payload?: number | Taro.navigateBackMiniProgram.Option['extraData'], mini?: boolean) => void;
export type Back = PromiseParamsAction<RouteBackOption>;
export type Exit = PromiseWithoutOptionAction;
export type RouteNavigate<R> = PromiseParamsAction<RouteOption<R>>;
export type Route<R extends Partial<RecordData>, S extends RecordData = RecordData> = RouterInfo<R> & {
from: ReturnType<typeof useFrom>;
} & {
preloadData: S;
};
declare function useRouter<R extends RecordData, S extends RecordData = RecordData>(): [
Route<R, S>,
{
navigate: RouteNavigate<R>;
switchTab: SwitchTab;
back: Back;
redirect: RouteNavigate<R>;
relaunch: RouteNavigate<R>;
exit: Exit;
preload: typeof preload;
}
];
export default useRouter;