From d1bb8f9d143808013ed184c3888d242d12e0aae1 Mon Sep 17 00:00:00 2001 From: wkj <278599135@qq.com> Date: Fri, 23 Dec 2022 11:41:18 +0800 Subject: [PATCH] =?UTF-8?q?features=20navigator=20=20=E5=AF=B9=E5=B0=8F?= =?UTF-8?q?=E7=A8=8B=E5=BA=8Fnamespace=E7=9A=84=E5=AE=B9=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/features/navigator.mp.d.ts | 13 +++++++++++++ lib/features/navigator.mp.js | 22 ++++++++++++++++++++- lib/page.common.js | 2 +- src/features/navigator.mp.ts | 35 ++++++++++++++++++++++++++++++++++ src/page.common.ts | 2 +- 5 files changed, 71 insertions(+), 3 deletions(-) diff --git a/lib/features/navigator.mp.d.ts b/lib/features/navigator.mp.d.ts index 23fee048..3ae5496a 100644 --- a/lib/features/navigator.mp.d.ts +++ b/lib/features/navigator.mp.d.ts @@ -1,8 +1,20 @@ +/// 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'; +declare type Location = { + pathname: string; + state: unknown; + key: string; +}; export declare class Navigator extends Feature { + namespace: string; + history: WechatMiniprogram.Wx; + constructor(); + setNamespace(namespace: string): void; + getLocation(): Location; + getNamespace(): string; private constructUrl; navigateTo(options: { url: string; @@ -12,3 +24,4 @@ export declare class Navigator extends Feature { } & OakNavigateToParameters, state?: Record): Promise; navigateBack(delta?: number): Promise; } +export {}; diff --git a/lib/features/navigator.mp.js b/lib/features/navigator.mp.js index bfa7861c..f9c7e21c 100644 --- a/lib/features/navigator.mp.js +++ b/lib/features/navigator.mp.js @@ -8,8 +8,28 @@ var Feature_1 = require("../types/Feature"); var Navigator = /** @class */ (function (_super) { tslib_1.__extends(Navigator, _super); function Navigator() { - return _super !== null && _super.apply(this, arguments) || this; + var _this = _super.call(this) || this; + _this.history = wx; + _this.namespace = ''; + return _this; } + Navigator.prototype.setNamespace = function (namespace) { + this.namespace = namespace; + }; + Navigator.prototype.getLocation = function () { + var pages = getCurrentPages(); //获取加载的页面 + var currentPage = pages[pages.length - 1]; //获取当前页面的对象 + var url = currentPage.route; //当前页面url + var options = currentPage.options; //如果要获取url中所带的参数可以查看options + return { + pathname: url, + state: options, + key: "".concat(pages.length - 1), + }; + }; + Navigator.prototype.getNamespace = function () { + return this.namespace; + }; Navigator.prototype.constructUrl = function (url, state) { var urlParse = url_1.default.parse(url, true); var _a = urlParse, pathname = _a.pathname, search = _a.search; diff --git a/lib/page.common.js b/lib/page.common.js index 2ba5c92a..a4ee1a16 100644 --- a/lib/page.common.js +++ b/lib/page.common.js @@ -141,7 +141,7 @@ function reRender(option, extra) { var rows = this.features.runningTree.getFreshValue(this.state.oakFullpath); var oakDirty = this.features.runningTree.isDirty(this.state.oakFullpath); var oakLoading = !this.pullDownRefresh && this.features.runningTree.isLoading(this.state.oakFullpath); - var oakPullDownRefreshLoading = this.pullDownRefresh && this.features.runningTree.isLoading(this.state.oakFullpath); + var oakPullDownRefreshLoading = !!this.pullDownRefresh && this.features.runningTree.isLoading(this.state.oakFullpath); var oakLoadingMore = this.features.runningTree.isLoadingMore(this.state.oakFullpath); var oakExecuting = this.features.runningTree.isExecuting(this.state.oakFullpath); var oakExecutable = !oakExecuting && this.features.runningTree.tryExecute(this.state.oakFullpath); diff --git a/src/features/navigator.mp.ts b/src/features/navigator.mp.ts index 4eb3b362..0b4a7831 100644 --- a/src/features/navigator.mp.ts +++ b/src/features/navigator.mp.ts @@ -5,7 +5,42 @@ import { OakNavigateToParameters } from '../types/Page'; import { EntityDict as BaseEntityDict } from 'oak-domain/lib/base-app-domain'; import { EntityDict } from 'oak-domain/lib/types'; +type Location = { + pathname: string; + state: unknown; + key: string +}; + export class Navigator extends Feature { + namespace: string; + history: WechatMiniprogram.Wx; + + constructor() { + super(); + this.history = wx; + this.namespace = ''; + } + + setNamespace(namespace: string) { + this.namespace = namespace; + } + + getLocation(): Location { + const pages = getCurrentPages(); //获取加载的页面 + const currentPage = pages[pages.length - 1]; //获取当前页面的对象 + const url = currentPage.route; //当前页面url + const options = currentPage.options; //如果要获取url中所带的参数可以查看options + return { + pathname: url, + state: options, + key: `${pages.length - 1}`, + }; + } + + getNamespace() { + return this.namespace; + } + private constructUrl(url: string, state?: Record) { const urlParse = URL.parse(url, true); const { pathname, search } = urlParse as { diff --git a/src/page.common.ts b/src/page.common.ts index 6221a482..e363d5c9 100644 --- a/src/page.common.ts +++ b/src/page.common.ts @@ -144,7 +144,7 @@ export function reRender< const oakDirty = this.features.runningTree.isDirty(this.state.oakFullpath); const oakLoading = !(this as any).pullDownRefresh && this.features.runningTree.isLoading(this.state.oakFullpath); - const oakPullDownRefreshLoading = (this as any).pullDownRefresh && this.features.runningTree.isLoading(this.state.oakFullpath); + const oakPullDownRefreshLoading = !!(this as any).pullDownRefresh && this.features.runningTree.isLoading(this.state.oakFullpath); const oakLoadingMore = this.features.runningTree.isLoadingMore(this.state.oakFullpath); const oakExecuting = this.features.runningTree.isExecuting(this.state.oakFullpath); const oakExecutable = !oakExecuting && this.features.runningTree.tryExecute(this.state.oakFullpath);