From 98e2e4c89a859e67c911134652d4b005be51e2d1 Mon Sep 17 00:00:00 2001 From: xiaoMingTongXue <40878104+cMing1997@users.noreply.github.com> Date: Tue, 2 Jan 2024 09:44:50 +0800 Subject: [PATCH] =?UTF-8?q?fix(BasicForm):=20=E4=BF=AE=E5=A4=8D=20useCompo?= =?UTF-8?q?nentRegister=20=E6=96=B9=E6=B3=95=E6=97=A0=E6=B3=95=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E8=87=AA=E5=AE=9A=E4=B9=89=E7=9A=84=E7=BB=84=E4=BB=B6?= =?UTF-8?q?=EF=BC=8C=E6=B7=BB=E5=8A=A0=E6=97=B6=E7=88=86=E7=B1=BB=E5=9E=8B?= =?UTF-8?q?=E9=94=99=E8=AF=AF=E7=9A=84=E9=97=AE=E9=A2=98=20(#3483)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * types(component): 修复 useComponentRegister 方法无法添加自定义的组件,添加时爆类型错误的问题 * types(component): 修复 table 组件的 useTableForm 入参的 fetch 和 TableActionType 的 reload 类型定义报错的问题 --------- Co-authored-by: chengmingrui --- src/components/Form/src/componentMap.ts | 9 ++++++--- src/components/Form/src/hooks/useComponentRegister.ts | 10 +++++++++- src/components/Table/src/hooks/useTableForm.ts | 2 +- src/components/Table/src/types/table.ts | 2 +- src/utils/is.ts | 5 +++++ 5 files changed, 22 insertions(+), 6 deletions(-) diff --git a/src/components/Form/src/componentMap.ts b/src/components/Form/src/componentMap.ts index 24337118..687db268 100644 --- a/src/components/Form/src/componentMap.ts +++ b/src/components/Form/src/componentMap.ts @@ -35,7 +35,7 @@ import { CountdownInput } from '@/components/CountDown'; import { BasicTitle } from '@/components/Basic'; import { CropperAvatar } from '@/components/Cropper'; -const componentMap = new Map(); +const componentMap = new Map(); componentMap.set('Input', Input); componentMap.set('InputGroup', Input.Group); @@ -79,11 +79,14 @@ componentMap.set('CropperAvatar', CropperAvatar); componentMap.set('BasicTitle', BasicTitle); -export function add(compName: ComponentType, component: Component) { +export function add( + compName: ComponentType | T, + component: R, +) { componentMap.set(compName, component); } -export function del(compName: ComponentType) { +export function del(compName: ComponentType | T) { componentMap.delete(compName); } diff --git a/src/components/Form/src/hooks/useComponentRegister.ts b/src/components/Form/src/hooks/useComponentRegister.ts index e60d980c..25f23ef1 100644 --- a/src/components/Form/src/hooks/useComponentRegister.ts +++ b/src/components/Form/src/hooks/useComponentRegister.ts @@ -2,8 +2,16 @@ import type { ComponentType } from '../types'; import { tryOnUnmounted } from '@vueuse/core'; import { add, del } from '../componentMap'; import type { Component } from 'vue'; +import { isPascalCase } from '@/utils/is'; + +export function useComponentRegister( + compName: ComponentType | T, + comp: R, +) { + if (!isPascalCase(compName)) { + throw new Error('compName must be in PascalCase'); + } -export function useComponentRegister(compName: ComponentType, comp: Component) { add(compName, comp); tryOnUnmounted(() => { del(compName); diff --git a/src/components/Table/src/hooks/useTableForm.ts b/src/components/Table/src/hooks/useTableForm.ts index f0474e68..5974e1cf 100644 --- a/src/components/Table/src/hooks/useTableForm.ts +++ b/src/components/Table/src/hooks/useTableForm.ts @@ -7,7 +7,7 @@ import { isFunction } from '@/utils/is'; export function useTableForm( propsRef: ComputedRef, slots: Slots, - fetch: (opt?: FetchParams | undefined) => Promise, + fetch: (opt?: FetchParams | undefined) => Promise[] | undefined>, getLoading: ComputedRef, ) { const getFormProps = computed((): Partial => { diff --git a/src/components/Table/src/types/table.ts b/src/components/Table/src/types/table.ts index fe0410b9..bd5afb9c 100644 --- a/src/components/Table/src/types/table.ts +++ b/src/components/Table/src/types/table.ts @@ -88,7 +88,7 @@ export interface GetColumnsParams { export type SizeType = 'default' | 'middle' | 'small' | 'large'; export interface TableActionType { - reload: (opt?: FetchParams) => Promise; + reload: (opt?: FetchParams) => Promise[] | undefined>; setSelectedRows: (rows: Recordable[]) => void; getSelectRows: () => T[]; clearSelectedRowKeys: () => void; diff --git a/src/utils/is.ts b/src/utils/is.ts index 123beb43..97c2ea95 100644 --- a/src/utils/is.ts +++ b/src/utils/is.ts @@ -65,3 +65,8 @@ export function isHttpUrl(path: string): boolean { const reg = /^http(s)?:\/\/([\w-]+\.)+[\w-]+(\/[\w- ./?%&=]*)?/; return reg.test(path); } + +export function isPascalCase(str: string): boolean { + const regex = /^[A-Z][A-Za-z]*$/; + return regex.test(str); +}