navigator 提供一个getState
This commit is contained in:
parent
0d60a47f49
commit
8742289ea5
|
|
@ -8,6 +8,10 @@ export declare class Navigator extends Feature {
|
|||
getNamespace(): string;
|
||||
urlParse(path: string): import("url").URL;
|
||||
urlFormat(url: URL): string;
|
||||
constructState(pathname: string, state?: Record<string, any>, search?: string): {
|
||||
pathname: string;
|
||||
oakFrom: string;
|
||||
};
|
||||
constructSearch(search?: string | null, state?: Record<string, any>): string;
|
||||
constructUrl(url: string, state?: Record<string, any>, disableNamespace?: boolean): string;
|
||||
constructNamespace(url: string, namespace?: string): string;
|
||||
|
|
|
|||
|
|
@ -24,6 +24,16 @@ export class Navigator extends Feature {
|
|||
const url2 = urlParse.toString();
|
||||
return url2.replace(this.base, '');
|
||||
}
|
||||
constructState(pathname, state, search) {
|
||||
// 构建search
|
||||
const search2 = this.constructSearch(search, state);
|
||||
const searchParams = new URLSearchParams(search2 || '');
|
||||
const oakFrom = searchParams.get('oakFrom');
|
||||
return {
|
||||
pathname,
|
||||
oakFrom,
|
||||
};
|
||||
}
|
||||
constructSearch(search, state) {
|
||||
const searchParams = new URLSearchParams(search || '');
|
||||
if (state) {
|
||||
|
|
|
|||
|
|
@ -12,7 +12,10 @@ export declare class Navigator extends CommonNavigator {
|
|||
history: WechatMiniprogram.Wx;
|
||||
constructor();
|
||||
getLocation(): Location;
|
||||
getCurrentUrl(needParams?: boolean): string;
|
||||
getState(): {
|
||||
pathname: string;
|
||||
oakFrom: string;
|
||||
};
|
||||
getPathname(pathname: string, namespace?: string): string;
|
||||
private getUrlAndProps;
|
||||
navigateTo<ED extends EntityDict & BaseEntityDict, T2 extends keyof ED>(options: {
|
||||
|
|
|
|||
|
|
@ -21,19 +21,10 @@ export class Navigator extends CommonNavigator {
|
|||
key: `${pages.length - 1}`,
|
||||
};
|
||||
}
|
||||
getCurrentUrl(needParams) {
|
||||
getState() {
|
||||
const { pathname, state } = this.getLocation();
|
||||
if (!needParams) {
|
||||
return pathname;
|
||||
}
|
||||
// 构建search
|
||||
const search2 = this.constructSearch('', state);
|
||||
const urlParse = this.urlParse(pathname);
|
||||
urlParse.pathname = pathname;
|
||||
urlParse.search = search2;
|
||||
urlParse.searchParams.delete('oakFrom'); //把上层传入的oakFrom排除
|
||||
const url = this.urlFormat(urlParse);
|
||||
return url;
|
||||
const state2 = this.constructState(pathname, state);
|
||||
return state2;
|
||||
}
|
||||
getPathname(pathname, namespace) {
|
||||
if (!/^\/{1}/.test(pathname)) {
|
||||
|
|
@ -54,8 +45,10 @@ export class Navigator extends CommonNavigator {
|
|||
}
|
||||
getUrlAndProps(options, state, disableNamespace) {
|
||||
const { url, ...rest } = options;
|
||||
const oakFrom = this.getCurrentUrl();
|
||||
const state2 = Object.assign({}, rest, state, { oakFrom });
|
||||
const { pathname } = this.getLocation();
|
||||
const state2 = Object.assign({}, rest, state, {
|
||||
oakFrom: pathname,
|
||||
});
|
||||
const url2 = this.constructUrl(url, state2, disableNamespace);
|
||||
return {
|
||||
url: url2,
|
||||
|
|
|
|||
|
|
@ -15,7 +15,10 @@ export declare class Navigator extends CommonNavigator {
|
|||
pathname: string;
|
||||
state: Readonly<object | undefined>;
|
||||
};
|
||||
getCurrentUrl(needParams?: boolean): string;
|
||||
getState(): {
|
||||
pathname: string;
|
||||
oakFrom: string;
|
||||
};
|
||||
private getUrlAndProps;
|
||||
navigateTo<ED extends EntityDict & BaseEntityDict, T2 extends keyof ED>(options: {
|
||||
url: string;
|
||||
|
|
|
|||
|
|
@ -21,25 +21,18 @@ export class Navigator extends CommonNavigator {
|
|||
state: route.params,
|
||||
};
|
||||
}
|
||||
getCurrentUrl(needParams) {
|
||||
getState() {
|
||||
const { pathname, state } = this.getLocation();
|
||||
if (!needParams) {
|
||||
return pathname;
|
||||
}
|
||||
// 构建search
|
||||
const search2 = this.constructSearch('', state);
|
||||
const urlParse = this.urlParse(pathname);
|
||||
urlParse.pathname = pathname;
|
||||
urlParse.search = search2;
|
||||
urlParse.searchParams.delete('oakFrom'); //把上层传入的oakFrom排除
|
||||
const url = this.urlFormat(urlParse);
|
||||
return url;
|
||||
const state2 = this.constructState(pathname, state);
|
||||
return state2;
|
||||
}
|
||||
getUrlAndProps(options, state, disableNamespace) {
|
||||
const { url, ...rest } = options;
|
||||
const url2 = this.constructUrl(url, undefined, disableNamespace);
|
||||
const oakFrom = this.getCurrentUrl();
|
||||
const state2 = Object.assign({}, rest, state, { oakFrom });
|
||||
const { pathname } = this.getLocation();
|
||||
const state2 = Object.assign({}, rest, state, {
|
||||
oakFrom: pathname,
|
||||
});
|
||||
return {
|
||||
url: url2,
|
||||
props: state2,
|
||||
|
|
|
|||
|
|
@ -12,7 +12,10 @@ export declare class Navigator extends CommonNavigator {
|
|||
*/
|
||||
setHistory(history: BrowserHistory): void;
|
||||
getLocation(): import("history").Location;
|
||||
getCurrentUrl(needParams?: boolean): string;
|
||||
getState(): {
|
||||
pathname: string;
|
||||
oakFrom: string;
|
||||
};
|
||||
private getUrlAndProps;
|
||||
navigateTo<ED extends EntityDict & BaseEntityDict, T2 extends keyof ED>(options: {
|
||||
url: string;
|
||||
|
|
|
|||
|
|
@ -16,25 +16,18 @@ export class Navigator extends CommonNavigator {
|
|||
getLocation() {
|
||||
return this.history.location;
|
||||
}
|
||||
getCurrentUrl(needParams) {
|
||||
const { pathname, search } = this.getLocation();
|
||||
if (!needParams) {
|
||||
return pathname;
|
||||
}
|
||||
// 构建search
|
||||
const search2 = this.constructSearch(search);
|
||||
const urlParse = this.urlParse(pathname);
|
||||
urlParse.pathname = pathname;
|
||||
urlParse.search = search2;
|
||||
urlParse.searchParams.delete('oakFrom'); //把上层传入的oakFrom排除
|
||||
const url = this.urlFormat(urlParse);
|
||||
return url;
|
||||
getState() {
|
||||
const { pathname, state, search } = this.getLocation();
|
||||
const state2 = this.constructState(pathname, state, search);
|
||||
return state2;
|
||||
}
|
||||
getUrlAndProps(options, state, disableNamespace) {
|
||||
const { url, ...rest } = options;
|
||||
const url2 = this.constructUrl(url, rest, disableNamespace);
|
||||
const oakFrom = this.getCurrentUrl();
|
||||
const state2 = Object.assign({}, state, { oakFrom });
|
||||
const { pathname } = this.getLocation();
|
||||
const state2 = Object.assign({}, state, {
|
||||
oakFrom: pathname,
|
||||
});
|
||||
return {
|
||||
url: url2,
|
||||
props: state2,
|
||||
|
|
|
|||
|
|
@ -8,6 +8,10 @@ export declare class Navigator extends Feature {
|
|||
getNamespace(): string;
|
||||
urlParse(path: string): import("url").URL;
|
||||
urlFormat(url: URL): string;
|
||||
constructState(pathname: string, state?: Record<string, any>, search?: string): {
|
||||
pathname: string;
|
||||
oakFrom: string;
|
||||
};
|
||||
constructSearch(search?: string | null, state?: Record<string, any>): string;
|
||||
constructUrl(url: string, state?: Record<string, any>, disableNamespace?: boolean): string;
|
||||
constructNamespace(url: string, namespace?: string): string;
|
||||
|
|
|
|||
|
|
@ -27,6 +27,16 @@ class Navigator extends Feature_1.Feature {
|
|||
const url2 = urlParse.toString();
|
||||
return url2.replace(this.base, '');
|
||||
}
|
||||
constructState(pathname, state, search) {
|
||||
// 构建search
|
||||
const search2 = this.constructSearch(search, state);
|
||||
const searchParams = new url_1.urlSearchParams(search2 || '');
|
||||
const oakFrom = searchParams.get('oakFrom');
|
||||
return {
|
||||
pathname,
|
||||
oakFrom,
|
||||
};
|
||||
}
|
||||
constructSearch(search, state) {
|
||||
const searchParams = new url_1.urlSearchParams(search || '');
|
||||
if (state) {
|
||||
|
|
|
|||
|
|
@ -12,7 +12,10 @@ export declare class Navigator extends CommonNavigator {
|
|||
history: WechatMiniprogram.Wx;
|
||||
constructor();
|
||||
getLocation(): Location;
|
||||
getCurrentUrl(needParams?: boolean): string;
|
||||
getState(): {
|
||||
pathname: string;
|
||||
oakFrom: string;
|
||||
};
|
||||
getPathname(pathname: string, namespace?: string): string;
|
||||
private getUrlAndProps;
|
||||
navigateTo<ED extends EntityDict & BaseEntityDict, T2 extends keyof ED>(options: {
|
||||
|
|
|
|||
|
|
@ -24,19 +24,10 @@ class Navigator extends navigator_common_1.Navigator {
|
|||
key: `${pages.length - 1}`,
|
||||
};
|
||||
}
|
||||
getCurrentUrl(needParams) {
|
||||
getState() {
|
||||
const { pathname, state } = this.getLocation();
|
||||
if (!needParams) {
|
||||
return pathname;
|
||||
}
|
||||
// 构建search
|
||||
const search2 = this.constructSearch('', state);
|
||||
const urlParse = this.urlParse(pathname);
|
||||
urlParse.pathname = pathname;
|
||||
urlParse.search = search2;
|
||||
urlParse.searchParams.delete('oakFrom'); //把上层传入的oakFrom排除
|
||||
const url = this.urlFormat(urlParse);
|
||||
return url;
|
||||
const state2 = this.constructState(pathname, state);
|
||||
return state2;
|
||||
}
|
||||
getPathname(pathname, namespace) {
|
||||
if (!/^\/{1}/.test(pathname)) {
|
||||
|
|
@ -57,8 +48,10 @@ class Navigator extends navigator_common_1.Navigator {
|
|||
}
|
||||
getUrlAndProps(options, state, disableNamespace) {
|
||||
const { url, ...rest } = options;
|
||||
const oakFrom = this.getCurrentUrl();
|
||||
const state2 = Object.assign({}, rest, state, { oakFrom });
|
||||
const { pathname } = this.getLocation();
|
||||
const state2 = Object.assign({}, rest, state, {
|
||||
oakFrom: pathname,
|
||||
});
|
||||
const url2 = this.constructUrl(url, state2, disableNamespace);
|
||||
return {
|
||||
url: url2,
|
||||
|
|
|
|||
|
|
@ -15,7 +15,10 @@ export declare class Navigator extends CommonNavigator {
|
|||
pathname: string;
|
||||
state: Readonly<object | undefined>;
|
||||
};
|
||||
getCurrentUrl(needParams?: boolean): string;
|
||||
getState(): {
|
||||
pathname: string;
|
||||
oakFrom: string;
|
||||
};
|
||||
private getUrlAndProps;
|
||||
navigateTo<ED extends EntityDict & BaseEntityDict, T2 extends keyof ED>(options: {
|
||||
url: string;
|
||||
|
|
|
|||
|
|
@ -24,25 +24,18 @@ class Navigator extends navigator_common_1.Navigator {
|
|||
state: route.params,
|
||||
};
|
||||
}
|
||||
getCurrentUrl(needParams) {
|
||||
getState() {
|
||||
const { pathname, state } = this.getLocation();
|
||||
if (!needParams) {
|
||||
return pathname;
|
||||
}
|
||||
// 构建search
|
||||
const search2 = this.constructSearch('', state);
|
||||
const urlParse = this.urlParse(pathname);
|
||||
urlParse.pathname = pathname;
|
||||
urlParse.search = search2;
|
||||
urlParse.searchParams.delete('oakFrom'); //把上层传入的oakFrom排除
|
||||
const url = this.urlFormat(urlParse);
|
||||
return url;
|
||||
const state2 = this.constructState(pathname, state);
|
||||
return state2;
|
||||
}
|
||||
getUrlAndProps(options, state, disableNamespace) {
|
||||
const { url, ...rest } = options;
|
||||
const url2 = this.constructUrl(url, undefined, disableNamespace);
|
||||
const oakFrom = this.getCurrentUrl();
|
||||
const state2 = Object.assign({}, rest, state, { oakFrom });
|
||||
const { pathname } = this.getLocation();
|
||||
const state2 = Object.assign({}, rest, state, {
|
||||
oakFrom: pathname,
|
||||
});
|
||||
return {
|
||||
url: url2,
|
||||
props: state2,
|
||||
|
|
|
|||
|
|
@ -12,7 +12,10 @@ export declare class Navigator extends CommonNavigator {
|
|||
*/
|
||||
setHistory(history: BrowserHistory): void;
|
||||
getLocation(): import("history").Location;
|
||||
getCurrentUrl(needParams?: boolean): string;
|
||||
getState(): {
|
||||
pathname: string;
|
||||
oakFrom: string;
|
||||
};
|
||||
private getUrlAndProps;
|
||||
navigateTo<ED extends EntityDict & BaseEntityDict, T2 extends keyof ED>(options: {
|
||||
url: string;
|
||||
|
|
|
|||
|
|
@ -19,25 +19,18 @@ class Navigator extends navigator_common_1.Navigator {
|
|||
getLocation() {
|
||||
return this.history.location;
|
||||
}
|
||||
getCurrentUrl(needParams) {
|
||||
const { pathname, search } = this.getLocation();
|
||||
if (!needParams) {
|
||||
return pathname;
|
||||
}
|
||||
// 构建search
|
||||
const search2 = this.constructSearch(search);
|
||||
const urlParse = this.urlParse(pathname);
|
||||
urlParse.pathname = pathname;
|
||||
urlParse.search = search2;
|
||||
urlParse.searchParams.delete('oakFrom'); //把上层传入的oakFrom排除
|
||||
const url = this.urlFormat(urlParse);
|
||||
return url;
|
||||
getState() {
|
||||
const { pathname, state, search } = this.getLocation();
|
||||
const state2 = this.constructState(pathname, state, search);
|
||||
return state2;
|
||||
}
|
||||
getUrlAndProps(options, state, disableNamespace) {
|
||||
const { url, ...rest } = options;
|
||||
const url2 = this.constructUrl(url, rest, disableNamespace);
|
||||
const oakFrom = this.getCurrentUrl();
|
||||
const state2 = Object.assign({}, state, { oakFrom });
|
||||
const { pathname } = this.getLocation();
|
||||
const state2 = Object.assign({}, state, {
|
||||
oakFrom: pathname,
|
||||
});
|
||||
return {
|
||||
url: url2,
|
||||
props: state2,
|
||||
|
|
|
|||
|
|
@ -1,7 +1,4 @@
|
|||
import { Feature } from '../types/Feature';
|
||||
import { OakNavigateToParameters } from '../types/Page';
|
||||
import { EntityDict as BaseEntityDict } from 'oak-domain/lib/base-app-domain';
|
||||
import { EntityDict } from 'oak-domain/lib/types';
|
||||
import {
|
||||
url as URL,
|
||||
urlSearchParams as URLSearchParams,
|
||||
|
|
@ -38,6 +35,21 @@ export class Navigator extends Feature {
|
|||
return url2.replace(this.base, '');
|
||||
}
|
||||
|
||||
constructState(
|
||||
pathname: string,
|
||||
state?: Record<string, any>,
|
||||
search?: string
|
||||
) {
|
||||
// 构建search
|
||||
const search2 = this.constructSearch(search, state);
|
||||
const searchParams = new URLSearchParams(search2 || '');
|
||||
const oakFrom = searchParams.get('oakFrom') as string;
|
||||
return {
|
||||
pathname,
|
||||
oakFrom,
|
||||
};
|
||||
}
|
||||
|
||||
constructSearch(search?: string | null, state?: Record<string, any>) {
|
||||
const searchParams = new URLSearchParams(search || '');
|
||||
if (state) {
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
import { assert } from 'oak-domain/lib/utils/assert';
|
||||
import { Feature } from '../types/Feature';
|
||||
import { OakNavigateToParameters } from '../types/Page';
|
||||
import { EntityDict as BaseEntityDict } from 'oak-domain/lib/base-app-domain';
|
||||
import { EntityDict } from 'oak-domain/lib/types';
|
||||
|
|
@ -35,20 +34,10 @@ export class Navigator extends CommonNavigator {
|
|||
};
|
||||
}
|
||||
|
||||
getCurrentUrl(needParams?: boolean) {
|
||||
getState() {
|
||||
const { pathname, state } = this.getLocation();
|
||||
|
||||
if (!needParams) {
|
||||
return pathname;
|
||||
}
|
||||
// 构建search
|
||||
const search2 = this.constructSearch('', state);
|
||||
const urlParse = this.urlParse(pathname);
|
||||
urlParse.pathname = pathname;
|
||||
urlParse.search = search2;
|
||||
urlParse.searchParams.delete('oakFrom'); //把上层传入的oakFrom排除
|
||||
const url = this.urlFormat(urlParse);
|
||||
return url;
|
||||
const state2 = this.constructState(pathname, state);
|
||||
return state2;
|
||||
}
|
||||
|
||||
getPathname(pathname: string, namespace?: string) {
|
||||
|
|
@ -80,11 +69,10 @@ export class Navigator extends CommonNavigator {
|
|||
disableNamespace?: boolean
|
||||
) {
|
||||
const { url, ...rest } = options;
|
||||
const oakFrom = this.getCurrentUrl();
|
||||
const state2 = Object.assign({}, rest, state, { oakFrom }) as Record<
|
||||
string,
|
||||
any
|
||||
>;
|
||||
const { pathname } = this.getLocation();
|
||||
const state2 = Object.assign({}, rest, state, {
|
||||
oakFrom: pathname,
|
||||
}) as Record<string, any>;
|
||||
const url2 = this.constructUrl(url, state2, disableNamespace);
|
||||
|
||||
return {
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
|
||||
import { Feature } from '../types/Feature';
|
||||
import {
|
||||
OakNavigateToParameters,
|
||||
} from '../types/Page';
|
||||
|
|
@ -42,20 +41,10 @@ export class Navigator extends CommonNavigator {
|
|||
};
|
||||
}
|
||||
|
||||
getCurrentUrl(needParams?: boolean) {
|
||||
getState() {
|
||||
const { pathname, state } = this.getLocation();
|
||||
if (!needParams) {
|
||||
return pathname;
|
||||
}
|
||||
// 构建search
|
||||
const search2 = this.constructSearch('', state);
|
||||
const urlParse = this.urlParse(pathname);
|
||||
urlParse.pathname = pathname;
|
||||
urlParse.search = search2;
|
||||
urlParse.searchParams.delete('oakFrom'); //把上层传入的oakFrom排除
|
||||
const url = this.urlFormat(urlParse);
|
||||
|
||||
return url;
|
||||
const state2 = this.constructState(pathname, state);
|
||||
return state2;
|
||||
}
|
||||
|
||||
private getUrlAndProps<
|
||||
|
|
@ -68,11 +57,10 @@ export class Navigator extends CommonNavigator {
|
|||
) {
|
||||
const { url, ...rest } = options;
|
||||
const url2 = this.constructUrl(url, undefined, disableNamespace);
|
||||
const oakFrom = this.getCurrentUrl();
|
||||
const state2 = Object.assign({}, rest, state, { oakFrom }) as Record<
|
||||
string,
|
||||
any
|
||||
>;
|
||||
const { pathname } = this.getLocation();
|
||||
const state2 = Object.assign({}, rest, state, {
|
||||
oakFrom: pathname,
|
||||
}) as Record<string, any>;
|
||||
|
||||
return {
|
||||
url: url2,
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
import { createBrowserHistory, BrowserHistory } from 'history';
|
||||
import { Feature } from '../types/Feature';
|
||||
import {
|
||||
OakNavigateToParameters,
|
||||
} from '../types/Page';
|
||||
|
|
@ -29,20 +28,14 @@ export class Navigator extends CommonNavigator {
|
|||
return this.history.location;
|
||||
}
|
||||
|
||||
getCurrentUrl(needParams?: boolean) {
|
||||
const { pathname, search } = this.getLocation();
|
||||
if (!needParams) {
|
||||
return pathname;
|
||||
}
|
||||
// 构建search
|
||||
const search2 = this.constructSearch(search);
|
||||
const urlParse = this.urlParse(pathname);
|
||||
urlParse.pathname = pathname;
|
||||
urlParse.search = search2;
|
||||
urlParse.searchParams.delete('oakFrom'); //把上层传入的oakFrom排除
|
||||
const url = this.urlFormat(urlParse);
|
||||
|
||||
return url;
|
||||
getState() {
|
||||
const { pathname, state, search } = this.getLocation();
|
||||
const state2 = this.constructState(
|
||||
pathname,
|
||||
state as Record<string, any>,
|
||||
search
|
||||
);
|
||||
return state2;
|
||||
}
|
||||
|
||||
private getUrlAndProps<
|
||||
|
|
@ -55,11 +48,10 @@ export class Navigator extends CommonNavigator {
|
|||
) {
|
||||
const { url, ...rest } = options;
|
||||
const url2 = this.constructUrl(url, rest, disableNamespace);
|
||||
const oakFrom = this.getCurrentUrl();
|
||||
const state2 = Object.assign({}, state, { oakFrom }) as Record<
|
||||
string,
|
||||
any
|
||||
>;
|
||||
const { pathname } = this.getLocation();
|
||||
const state2 = Object.assign({}, state, {
|
||||
oakFrom: pathname,
|
||||
}) as Record<string, any>;
|
||||
|
||||
return {
|
||||
url: url2,
|
||||
|
|
|
|||
Loading…
Reference in New Issue