UNPKG

taro-hooks

Version:
35 lines (34 loc) 1.36 kB
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;