From ff7cda4ede1337c6b0bec2dd6a60702ba74b380e Mon Sep 17 00:00:00 2001 From: zanllp Date: Thu, 23 Jun 2022 15:19:55 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=87=A0=E4=B8=AA=E7=B1=BB=E5=9E=8B?= =?UTF-8?q?=E8=A1=A5=E5=85=A8=E5=92=8CuseFetchQueueHelper=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0run=E5=87=BD=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 2 +- src/GeneralPagination/index.vue.d.ts | 8 ++++---- src/SearchSelect/index.vue | 7 ++++++- src/SearchSelect/index.vue.d.ts | 11 ++++++++++- src/SplitView/index.vue.d.ts | 15 ++++++++------- src/fetchQueue.ts | 1 + src/strictQueue.ts | 5 +---- src/useFetchQueueHelper.ts | 3 +++ test/FetchQueue/hook.spec.ts | 17 +++++++++++++++++ 9 files changed, 51 insertions(+), 18 deletions(-) create mode 100644 test/FetchQueue/hook.spec.ts diff --git a/package.json b/package.json index 562d0b7..ddba025 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "vue3-ts-util", - "version": "0.3.34", + "version": "0.3.35", "main": "dist/index.js", "module": "es/src/index.js", "types": "es/index.d.ts", diff --git a/src/GeneralPagination/index.vue.d.ts b/src/GeneralPagination/index.vue.d.ts index 320c525..ba13716 100644 --- a/src/GeneralPagination/index.vue.d.ts +++ b/src/GeneralPagination/index.vue.d.ts @@ -1,24 +1,24 @@ declare const _default: import("vue").DefineComponent<{ option: { - type: import("vue").PropType<{ + type: import("vue").PropType Promise; total: number; pageSize: number; curr: number; setCurr: (v: number) => void; - }>; + }>>; required: true; }; }, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Record, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<{ option?: unknown; } & { - option: { + option: import("..").DeepReadonly<{ onChange: (page: number) => Promise; total: number; pageSize: number; curr: number; setCurr: (v: number) => void; - }; + }>; } & {}>, {}>; /** * @example diff --git a/src/SearchSelect/index.vue b/src/SearchSelect/index.vue index 9f3a4a9..f072c6b 100644 --- a/src/SearchSelect/index.vue +++ b/src/SearchSelect/index.vue @@ -8,6 +8,7 @@ :options="currOptions" optionLabelProp="title" show-search + :mode="mode" v-bind="$attrs" /> @@ -28,7 +29,11 @@ export default defineComponent({ /** * 配置如何将选项转换成显示的文本,值,键 */ - conv: customPropType>() + conv: customPropType>(), + /** + * 需要多选加上这个 + */ + mode: customPropType<'multiple'>(false) }, setup (props, ctx) { const searchTarget = ref('') // 当前搜索目标 diff --git a/src/SearchSelect/index.vue.d.ts b/src/SearchSelect/index.vue.d.ts index 027ab86..d053b1f 100644 --- a/src/SearchSelect/index.vue.d.ts +++ b/src/SearchSelect/index.vue.d.ts @@ -18,6 +18,12 @@ declare const _default: import("vue").DefineComponent<{ type: import("vue").PropType>; required: true; }; + /** + * 需要多选加上这个 + */ + mode: { + type: import("vue").PropType<"multiple">; + }; }, { currOptions: import("vue").ComputedRef; onSearch: (target: string) => void; @@ -27,9 +33,12 @@ declare const _default: import("vue").DefineComponent<{ value?: unknown; options?: unknown; conv?: unknown; + mode?: unknown; } & { value: unknown; options: any[]; conv: SearchSelectConv; -} & {}>, {}>; +} & { + mode?: "multiple" | undefined; +}>, {}>; export default _default; diff --git a/src/SplitView/index.vue.d.ts b/src/SplitView/index.vue.d.ts index 7818883..39a496c 100644 --- a/src/SplitView/index.vue.d.ts +++ b/src/SplitView/index.vue.d.ts @@ -1,15 +1,12 @@ declare const _default: import("vue").DefineComponent<{ percent: { - type: import("vue").PropType; - required: true; + default: number; }; border: { - type: import("vue").PropType; - required: true; + default: boolean; }; direction: { - type: import("vue").PropType<"vertical" | "horizontal">; - required: true; + default: "vertical" | "horizontal"; }; }, { split: Readonly, {}>; +} & {}>, { + percent: number; + border: boolean; + direction: "vertical" | "horizontal"; +}>; export default _default; diff --git a/src/fetchQueue.ts b/src/fetchQueue.ts index 781d3c8..3181c76 100644 --- a/src/fetchQueue.ts +++ b/src/fetchQueue.ts @@ -215,4 +215,5 @@ export class FetchQueue { this.tryRunNext() // 尝试运行刚才压入的任务 return deepReadonly(task) } + } diff --git a/src/strictQueue.ts b/src/strictQueue.ts index fbdcd0d..46e0953 100644 --- a/src/strictQueue.ts +++ b/src/strictQueue.ts @@ -7,9 +7,6 @@ import { FetchQueue, useFetchQueueHelper } from '.' */ export const strictQueue = (args: ConstructorParameters = [1, 0, -1, 'throw']) => { const fetchQueue = new FetchQueue(...args) - return useFetchQueueHelper(fetchQueue) as { - loading: ComputedRef - fetchQueue: FetchQueue - } // 编译时好像有点问题手动指定 + return useFetchQueueHelper(fetchQueue) } export const useStrictQueue = strictQueue diff --git a/src/useFetchQueueHelper.ts b/src/useFetchQueueHelper.ts index 2a54386..133ee8a 100644 --- a/src/useFetchQueueHelper.ts +++ b/src/useFetchQueueHelper.ts @@ -8,6 +8,9 @@ export const useFetchQueueHelper = (fetchQueue: FetchQueue) => { }) return { fetchQueue, + async run (action: () => Promise): Promise { + return fetchQueue.pushAction(action).res + }, ...deepReadonly({ loading, }) diff --git a/test/FetchQueue/hook.spec.ts b/test/FetchQueue/hook.spec.ts new file mode 100644 index 0000000..269fd1e --- /dev/null +++ b/test/FetchQueue/hook.spec.ts @@ -0,0 +1,17 @@ +/* eslint-disable no-plusplus */ +import { delay, useStrictQueue } from '../../src' + +describe('useFetchQueueHelper', () => { + + it('套层皮的简单综合测试', async () => { + const { run, loading } = useStrictQueue() + expect(loading.value).toBe(false) + const r = run(async () => { + await delay(100) + return 1 + }) + expect(loading.value).toBe(true) + expect(await r).toBe(1) + expect(loading.value).toBe(false) + }) +})