diff --git a/packages/components/auto-complete/auto-complete.tsx b/packages/components/auto-complete/auto-complete.tsx index 8c336b4710..8a61a72f33 100644 --- a/packages/components/auto-complete/auto-complete.tsx +++ b/packages/components/auto-complete/auto-complete.tsx @@ -21,7 +21,7 @@ export default defineComponent({ props, setup(props: TdAutoCompleteProps, { slots }) { const { value, modelValue } = toRefs(props); - const [tValue, setTValue] = useVModel(value, modelValue, props.defaultValue, props.onChange); + const [tValue, setTValue] = useVModel(value, modelValue, props.defaultValue, 'onChange'); const renderContent = useContent(); const renderTNodeJSX = useTNodeJSX(); const { classPrefix, SIZE } = useCommonClassName(); diff --git a/packages/components/cascader/hooks/index.ts b/packages/components/cascader/hooks/index.ts index 741c8c6ec9..95de8a5882 100644 --- a/packages/components/cascader/hooks/index.ts +++ b/packages/components/cascader/hooks/index.ts @@ -95,7 +95,7 @@ export const useContext = ( export const useCascaderContext = (props: TdCascaderProps) => { const disabled = useDisabled(); const { value, modelValue, popupVisible } = toRefs(props); - const [innerValue, setInnerValue] = useVModel(value, modelValue, props.defaultValue, props.onChange); + const [innerValue, setInnerValue] = useVModel(value, modelValue, props.defaultValue, 'onChange'); const [innerPopupVisible, setPopupVisible] = useDefaultValue( popupVisible, false, diff --git a/packages/components/checkbox/checkbox.tsx b/packages/components/checkbox/checkbox.tsx index f8583ae85e..83d72dfee3 100644 --- a/packages/components/checkbox/checkbox.tsx +++ b/packages/components/checkbox/checkbox.tsx @@ -33,13 +33,7 @@ export default defineComponent({ const { STATUS } = useCommonClassName(); const { checked, modelValue, lazyLoad } = toRefs(props); - const [innerChecked, setInnerChecked] = useVModel( - checked, - modelValue, - props.defaultChecked, - props.onChange, - 'checked', - ); + const [innerChecked, setInnerChecked] = useVModel(checked, modelValue, props.defaultChecked, 'onChange', 'checked'); const checkboxGroupData = inject(CheckboxGroupInjectionKey, undefined); diff --git a/packages/components/checkbox/group.tsx b/packages/components/checkbox/group.tsx index 44347ff11b..3bede1fbaa 100644 --- a/packages/components/checkbox/group.tsx +++ b/packages/components/checkbox/group.tsx @@ -17,7 +17,7 @@ export default defineComponent({ const { isArray } = Array; const { value, modelValue } = toRefs(props); - const [innerValue, setInnerValue] = useVModel(value, modelValue, props.defaultValue, props.onChange); + const [innerValue, setInnerValue] = useVModel(value, modelValue, props.defaultValue, 'onChange'); const optionList = ref>([]); diff --git a/packages/components/collapse/collapse.tsx b/packages/components/collapse/collapse.tsx index f27b58cb19..0eb7e240b3 100644 --- a/packages/components/collapse/collapse.tsx +++ b/packages/components/collapse/collapse.tsx @@ -11,7 +11,7 @@ export default defineComponent({ const borderlessClass = usePrefixClass('-border-less'); const renderTNodeJSX = useTNodeJSX(); const { value, expandMutex, borderless, modelValue } = toRefs(props); - const [collapseValue, setCollapseValue] = useVModel(value, modelValue, props.defaultValue, props.onChange); + const [collapseValue, setCollapseValue] = useVModel(value, modelValue, props.defaultValue, 'onChange'); const updateCollapseValue = (value: CollapsePanelValue) => { let newValue: CollapseValue = [].concat(collapseValue.value || []); const index = newValue.indexOf(value); diff --git a/packages/components/color-picker/color-picker.tsx b/packages/components/color-picker/color-picker.tsx index 1266f3f089..1f74fc6605 100644 --- a/packages/components/color-picker/color-picker.tsx +++ b/packages/components/color-picker/color-picker.tsx @@ -15,7 +15,7 @@ export default defineComponent({ const renderTNodeJSXDefault = useTNodeDefault(); const { value: inputValue, modelValue, recentColors } = toRefs(props); - const [innerValue, setInnerValue] = useVModel(inputValue, modelValue, props.defaultValue, props.onChange); + const [innerValue, setInnerValue] = useVModel(inputValue, modelValue, props.defaultValue, 'onChange'); const [innerRecentColors, setInnerRecentColors] = useDefaultValue( recentColors, props.defaultRecentColors, diff --git a/packages/components/color-picker/components/panel/index.tsx b/packages/components/color-picker/components/panel/index.tsx index 9688bab301..5826772ae4 100644 --- a/packages/components/color-picker/components/panel/index.tsx +++ b/packages/components/color-picker/components/panel/index.tsx @@ -34,7 +34,7 @@ export default defineComponent({ const { t, globalConfig } = useConfig('colorPicker'); const statusClassNames = STATUS.value; const { value: inputValue, modelValue, recentColors } = toRefs(props); - const [innerValue, setInnerValue] = useVModel(inputValue, modelValue, props.defaultValue, props.onChange); + const [innerValue, setInnerValue] = useVModel(inputValue, modelValue, props.defaultValue, 'onChange'); const [innerRecentColors, setInnerRecentColors] = useDefaultValue( recentColors, props.defaultRecentColors, diff --git a/packages/components/date-picker/hooks/useRangeValue.ts b/packages/components/date-picker/hooks/useRangeValue.ts index 8c90ea66c3..8e8c97f778 100644 --- a/packages/components/date-picker/hooks/useRangeValue.ts +++ b/packages/components/date-picker/hooks/useRangeValue.ts @@ -15,7 +15,7 @@ import { export function useRangeValue(props: TdDateRangePickerProps) { const { value: valueFromProps, modelValue } = toRefs(props); - const [value, onChange] = useVModel(valueFromProps, modelValue, props.defaultValue, props.onChange); + const [value, onChange] = useVModel(valueFromProps, modelValue, props.defaultValue, 'onChange'); const formatRef = computed(() => getDefaultFormat({ diff --git a/packages/components/date-picker/hooks/useSingleValue.tsx b/packages/components/date-picker/hooks/useSingleValue.tsx index dda7a12214..5e8135c66d 100644 --- a/packages/components/date-picker/hooks/useSingleValue.tsx +++ b/packages/components/date-picker/hooks/useSingleValue.tsx @@ -12,7 +12,7 @@ import { TdDatePickerProps, DateMultipleValue, DateValue } from '../type'; export function useSingleValue(props: TdDatePickerProps) { const { value: valueFromProps, modelValue } = toRefs(props); - const [value, onChange] = useVModel(valueFromProps, modelValue, props.defaultValue, props.onChange); + const [value, onChange] = useVModel(valueFromProps, modelValue, props.defaultValue, 'onChange'); const formatRef = computed(() => getDefaultFormat({ diff --git a/packages/components/guide/guide.tsx b/packages/components/guide/guide.tsx index 6b7fb5c3ae..8d9fe69fcb 100644 --- a/packages/components/guide/guide.tsx +++ b/packages/components/guide/guide.tsx @@ -21,13 +21,7 @@ export default defineComponent({ const { globalConfig } = useConfig('guide'); const { current, modelValue, hideCounter, hidePrev, hideSkip, steps, zIndex } = toRefs(props); - const [innerCurrent, setInnerCurrent] = useVModel( - current, - modelValue, - props.defaultCurrent, - props.onChange, - 'current', - ); + const [innerCurrent, setInnerCurrent] = useVModel(current, modelValue, props.defaultCurrent, 'onChange', 'current'); // 覆盖层,用于覆盖所有元素 const overlayLayerRef = ref(); diff --git a/packages/components/image-viewer/image-viewer.tsx b/packages/components/image-viewer/image-viewer.tsx index 2b8b982c4d..ec5a7fe4cb 100644 --- a/packages/components/image-viewer/image-viewer.tsx +++ b/packages/components/image-viewer/image-viewer.tsx @@ -33,7 +33,7 @@ export default defineComponent({ const { index, visible, modelValue, imageReferrerpolicy } = toRefs(props); const [indexValue, setIndexValue] = useDefaultValue(index, props.defaultIndex ?? 0, props.onIndexChange, 'index'); - const [visibleValue, setVisibleValue] = useVModel(visible, modelValue, props.defaultVisible, () => {}, 'visible'); + const [visibleValue, setVisibleValue] = useVModel(visible, modelValue, props.defaultVisible, '', 'visible'); const animationEnd = ref(true); const animationTimer = ref(); // teleport容器 diff --git a/packages/components/input-number/hooks/useInputNumber.tsx b/packages/components/input-number/hooks/useInputNumber.tsx index d31277b1c5..4918292301 100644 --- a/packages/components/input-number/hooks/useInputNumber.tsx +++ b/packages/components/input-number/hooks/useInputNumber.tsx @@ -25,7 +25,7 @@ export default function useInputNumber(props: TdInputNumberProps) { const { classPrefix, SIZE, STATUS } = useCommonClassName(); const { value, modelValue, max, min } = toRefs(props); // 统一处理受控、非受控、语法糖 v-model 等 - const [tValue, setTValue] = useVModel(value, modelValue, props.defaultValue, props.onChange); + const [tValue, setTValue] = useVModel(value, modelValue, props.defaultValue, 'onChange'); const inputRef = ref(); const userInput = ref(''); diff --git a/packages/components/input/hooks/useInput.ts b/packages/components/input/hooks/useInput.ts index 17a096e187..bb460b3c48 100644 --- a/packages/components/input/hooks/useInput.ts +++ b/packages/components/input/hooks/useInput.ts @@ -26,7 +26,7 @@ export function useInput(props: ExtendsTdInputProps, expose: (exposed: Record props.theme); diff --git a/packages/components/menu/menu.tsx b/packages/components/menu/menu.tsx index 7b32a90db2..14b944b82e 100644 --- a/packages/components/menu/menu.tsx +++ b/packages/components/menu/menu.tsx @@ -41,7 +41,7 @@ export default defineComponent({ })); const { value, modelValue, expanded } = toRefs(props); - const [activeValue, setActiveValue] = useVModel(value, modelValue, props.defaultValue, props.onChange); + const [activeValue, setActiveValue] = useVModel(value, modelValue, props.defaultValue, 'onChange'); const [expandValues, setExpand] = useDefaultValue(expanded, props.defaultExpanded, props.onExpand, 'expanded'); const activeValues = ref([]); diff --git a/packages/components/pagination/pagination.tsx b/packages/components/pagination/pagination.tsx index 09f90907ca..e39f0c4a63 100755 --- a/packages/components/pagination/pagination.tsx +++ b/packages/components/pagination/pagination.tsx @@ -43,7 +43,7 @@ export default defineComponent({ current, modelValue, props.defaultCurrent, - props.onCurrentChange, + 'onCurrentChange', 'current', ); diff --git a/packages/components/popconfirm/popconfirm.tsx b/packages/components/popconfirm/popconfirm.tsx index 366badce43..6feeeaf6ea 100644 --- a/packages/components/popconfirm/popconfirm.tsx +++ b/packages/components/popconfirm/popconfirm.tsx @@ -37,7 +37,7 @@ export default defineComponent({ visible, modelValue, props.defaultVisible, - props.onVisibleChange, + 'onVisibleChange', 'visible', ); diff --git a/packages/components/popup/popup.tsx b/packages/components/popup/popup.tsx index c0c1091ead..fdefd8bb3f 100644 --- a/packages/components/popup/popup.tsx +++ b/packages/components/popup/popup.tsx @@ -95,7 +95,7 @@ export default defineComponent({ propVisible, modelValue, props.defaultVisible, - props.onVisibleChange, + 'onVisibleChange', 'visible', ); const renderTNodeJSX = useTNodeJSX(); diff --git a/packages/components/radio/group.tsx b/packages/components/radio/group.tsx index cb838d6004..5aaabe677e 100644 --- a/packages/components/radio/group.tsx +++ b/packages/components/radio/group.tsx @@ -37,7 +37,7 @@ export default defineComponent({ props, setup(props) { const { value, modelValue } = toRefs(props); - const [innerValue, setInnerValue] = useVModel(value, modelValue, props.defaultValue, props.onChange); + const [innerValue, setInnerValue] = useVModel(value, modelValue, props.defaultValue, 'onChange'); /** calculate bar style */ const radioGroupRef = ref(); diff --git a/packages/components/radio/radio.tsx b/packages/components/radio/radio.tsx index e7a28fdd09..292a603081 100644 --- a/packages/components/radio/radio.tsx +++ b/packages/components/radio/radio.tsx @@ -22,13 +22,7 @@ export default defineComponent({ setup(props, { attrs }) { const inputRef = ref(); const { checked, modelValue } = toRefs(props); - const [innerChecked, setInnerChecked] = useVModel( - checked, - modelValue, - props.defaultChecked, - props.onChange, - 'checked', - ); + const [innerChecked, setInnerChecked] = useVModel(checked, modelValue, props.defaultChecked, 'onChange', 'checked'); const radioChecked = computed(() => (radioGroup ? props.value === radioGroup.value : innerChecked.value)); diff --git a/packages/components/range-input/range-input.tsx b/packages/components/range-input/range-input.tsx index 44ff365298..2310f840e6 100644 --- a/packages/components/range-input/range-input.tsx +++ b/packages/components/range-input/range-input.tsx @@ -44,7 +44,7 @@ export default defineComponent({ const format = computed(() => calcArrayValue(props.format)); const inputProps = computed(() => calcArrayValue(props.inputProps)); const placeholder = computed(() => calcArrayValue(props.placeholder)); - const [innerValue, setInnerValue] = useVModel(value, modelValue, props.defaultValue, props.onChange); + const [innerValue, setInnerValue] = useVModel(value, modelValue, props.defaultValue, 'onChange'); const inputValue = computed(() => String((innerValue.value?.[0] || innerValue.value?.[1]) ?? '')); diff --git a/packages/components/rate/rate.tsx b/packages/components/rate/rate.tsx index 11572ecfd4..5cc4b26106 100644 --- a/packages/components/rate/rate.tsx +++ b/packages/components/rate/rate.tsx @@ -17,7 +17,7 @@ export default defineComponent({ const defaultColor = isArray(props.color) ? props.color[1] : 'var(--td-bg-color-component)'; const { value: inputValue, modelValue } = toRefs(props); - const [starValue, setStarValue] = useVModel(inputValue, modelValue, props.defaultValue, props.onChange); + const [starValue, setStarValue] = useVModel(inputValue, modelValue, props.defaultValue, 'onChange'); const hoverValue = ref(undefined); const root = ref(); diff --git a/packages/components/select/select.tsx b/packages/components/select/select.tsx index 1f0d7c6222..cced7aed37 100644 --- a/packages/components/select/select.tsx +++ b/packages/components/select/select.tsx @@ -51,7 +51,7 @@ export default defineComponent({ props.onInputChange, 'inputValue', ); - const [orgValue, setOrgValue] = useVModel(value, modelValue, props.defaultValue, props.onChange); + const [orgValue, setOrgValue] = useVModel(value, modelValue, props.defaultValue, 'onChange'); const selectPanelRef = ref(null); const selectInputRef = ref(null); const keys = computed(() => ({ diff --git a/packages/components/slider/slider.tsx b/packages/components/slider/slider.tsx index 8db4a6878e..591080fa00 100644 --- a/packages/components/slider/slider.tsx +++ b/packages/components/slider/slider.tsx @@ -38,7 +38,7 @@ export default defineComponent({ const COMPONENT_NAME = usePrefixClass('slider'); const { STATUS } = useCommonClassName(); const { value, modelValue } = toRefs(props) as any; - const [sliderValue, setSliderValue] = useVModel(value, modelValue, props.defaultValue, props.onChange); + const [sliderValue, setSliderValue] = useVModel(value, modelValue, props.defaultValue, 'onChange'); const sliderContainerRef = ref(); const sliderRef = ref(); diff --git a/packages/components/steps/steps.tsx b/packages/components/steps/steps.tsx index 6a9f5a0e68..a2aa621c56 100644 --- a/packages/components/steps/steps.tsx +++ b/packages/components/steps/steps.tsx @@ -14,13 +14,7 @@ export default defineComponent({ const COMPONENT_NAME = usePrefixClass('steps'); const { current, modelValue } = toRefs(props); - const [innerCurrent, setInnerCurrent] = useVModel( - current, - modelValue, - props.defaultCurrent, - props.onChange, - 'current', - ); + const [innerCurrent, setInnerCurrent] = useVModel(current, modelValue, props.defaultCurrent, 'onChange', 'current'); provide( 'StepsState', diff --git a/packages/components/switch/switch.tsx b/packages/components/switch/switch.tsx index 65d9f84d89..3368bf7724 100755 --- a/packages/components/switch/switch.tsx +++ b/packages/components/switch/switch.tsx @@ -17,7 +17,7 @@ export default defineComponent({ const { STATUS, SIZE } = useCommonClassName(); // values const { value, modelValue } = toRefs(props); - const [innerValue, setSwitchVal] = useVModel(value, modelValue, props.defaultValue, props.onChange); + const [innerValue, setSwitchVal] = useVModel(value, modelValue, props.defaultValue, 'onChange'); const activeValue = computed(() => { if (props.customValue && props.customValue.length > 0) { diff --git a/packages/components/tabs/tabs.tsx b/packages/components/tabs/tabs.tsx index ac09a93f7f..d79d2bb8fe 100644 --- a/packages/components/tabs/tabs.tsx +++ b/packages/components/tabs/tabs.tsx @@ -21,7 +21,7 @@ export default defineComponent({ const renderTNodeJSX = useTNodeJSX(); const { value, modelValue } = toRefs(props); - const [tabValue, setTabValue] = useVModel(value, modelValue, props.defaultValue || '', props.onChange); + const [tabValue, setTabValue] = useVModel(value, modelValue, props.defaultValue || '', 'onChange'); provide('tabs', { value: tabValue }); diff --git a/packages/components/tag-input/hooks/useTagList.tsx b/packages/components/tag-input/hooks/useTagList.tsx index 5f3230956c..a184bf047d 100644 --- a/packages/components/tag-input/hooks/useTagList.tsx +++ b/packages/components/tag-input/hooks/useTagList.tsx @@ -13,7 +13,7 @@ export function useTagList(props: TagInputProps) { const classPrefix = usePrefixClass(); const { value, modelValue, onRemove, max, minCollapsedNum, size, tagProps, getDragProps } = toRefs(props); // handle controlled property and uncontrolled property - const [_tagValue, setTagValue] = useVModel(value, modelValue, props.defaultValue || [], props.onChange); + const [_tagValue, setTagValue] = useVModel(value, modelValue, props.defaultValue || [], 'onChange'); const tagValue = computed(() => _tagValue.value || []); const oldInputValue = ref(); diff --git a/packages/components/tag/check-tag-group.tsx b/packages/components/tag/check-tag-group.tsx index f8637d0675..ba602ca029 100644 --- a/packages/components/tag/check-tag-group.tsx +++ b/packages/components/tag/check-tag-group.tsx @@ -14,7 +14,7 @@ export default defineComponent({ const componentName = usePrefixClass('check-tag-group'); const checkTagGroupClasses = computed(() => [componentName.value]); - const [innerValue, setInnerValue] = useVModel(value, modelValue, props.defaultValue, props.onChange); + const [innerValue, setInnerValue] = useVModel(value, modelValue, props.defaultValue, 'onChange'); const onCheckTagChange: TdCheckTagProps['onChange'] = (checked, ctx) => { const value = ctx.value; diff --git a/packages/components/tag/check-tag.tsx b/packages/components/tag/check-tag.tsx index 7dfd20e0e0..2f96fdc03a 100644 --- a/packages/components/tag/check-tag.tsx +++ b/packages/components/tag/check-tag.tsx @@ -15,13 +15,7 @@ export default defineComponent({ const renderContent = useContent(); const { checked, modelValue } = toRefs(props); - const [innerChecked, setInnerChecked] = useVModel( - checked, - modelValue, - props.defaultChecked, - props.onChange, - 'checked', - ); + const [innerChecked, setInnerChecked] = useVModel(checked, modelValue, props.defaultChecked, 'onChange', 'checked'); const tagClass = computed(() => { return [ diff --git a/packages/components/textarea/textarea.tsx b/packages/components/textarea/textarea.tsx index 59187985da..dfdf162c64 100644 --- a/packages/components/textarea/textarea.tsx +++ b/packages/components/textarea/textarea.tsx @@ -44,7 +44,7 @@ export default defineComponent({ const TEXTAREA_LIMIT = computed(() => `${name.value}__limit`); const { value, modelValue } = toRefs(props); - const [innerValue, setInnerValue] = useVModel(value, modelValue, props.defaultValue, props.onChange); + const [innerValue, setInnerValue] = useVModel(value, modelValue, props.defaultValue, 'onChange'); const disabled = useDisabled(); const isReadonly = useReadonly(); const textareaStyle = ref({}); diff --git a/packages/components/time-picker/time-picker.tsx b/packages/components/time-picker/time-picker.tsx index a8ae8a38b8..81d37511a8 100755 --- a/packages/components/time-picker/time-picker.tsx +++ b/packages/components/time-picker/time-picker.tsx @@ -41,7 +41,7 @@ export default defineComponent({ const isReadonly = useReadonly(); const { value, modelValue } = toRefs(props); - const [innerValue, setInnerValue] = useVModel(value, modelValue, props.defaultValue, props.onChange); + const [innerValue, setInnerValue] = useVModel(value, modelValue, props.defaultValue, 'onChange'); const disabled = useDisabled(); const { allowInput, format } = toRefs(props); diff --git a/packages/components/time-picker/time-range-picker.tsx b/packages/components/time-picker/time-range-picker.tsx index 3bd5c63fb1..e01be645c0 100644 --- a/packages/components/time-picker/time-range-picker.tsx +++ b/packages/components/time-picker/time-range-picker.tsx @@ -49,7 +49,7 @@ export default defineComponent({ }, ]); const { value, modelValue, allowInput, format } = toRefs(props); - const [innerValue, setInnerValue] = useVModel(value, modelValue, props.defaultValue, props.onChange as any); + const [innerValue, setInnerValue] = useVModel(value, modelValue, props.defaultValue, 'onChange'); const handleShowPopup = (visible: boolean, context: any) => { if (isReadOnly.value) return; diff --git a/packages/components/tooltip/tooltip.tsx b/packages/components/tooltip/tooltip.tsx index 62a8f736b7..615d1c0b80 100644 --- a/packages/components/tooltip/tooltip.tsx +++ b/packages/components/tooltip/tooltip.tsx @@ -23,7 +23,7 @@ export default defineComponent({ visible, modelValue, props.defaultVisible, - props.onVisibleChange, + 'onVisibleChange', 'visible', ); const vm = getCurrentInstance(); diff --git a/packages/components/transfer/transfer.tsx b/packages/components/transfer/transfer.tsx index 41fea773ae..a74e64be78 100644 --- a/packages/components/transfer/transfer.tsx +++ b/packages/components/transfer/transfer.tsx @@ -29,7 +29,7 @@ export default defineComponent({ const disabled = useDisabled(); const classPrefix = usePrefixClass(); const { value, modelValue, checked } = toRefs(props); - const [innerValue, setInnerValue] = useVModel(value, modelValue, props.defaultValue, props.onChange); + const [innerValue, setInnerValue] = useVModel(value, modelValue, props.defaultValue, 'onChange'); // @ts-ignore TODO const [innerChecked] = useDefaultValue(checked, props.defaultChecked, props.onCheckedChange, 'checked'); const valueList = computed(() => innerValue.value); diff --git a/packages/components/tree-select/tree-select.tsx b/packages/components/tree-select/tree-select.tsx index 68b86044e9..7c296c5707 100644 --- a/packages/components/tree-select/tree-select.tsx +++ b/packages/components/tree-select/tree-select.tsx @@ -47,7 +47,7 @@ export default defineComponent({ // model const { value, modelValue, popupVisible, inputValue } = toRefs(props); - const [treeSelectValue, setTreeSelectValue] = useVModel(value, modelValue, props.defaultValue, props.onChange); + const [treeSelectValue, setTreeSelectValue] = useVModel(value, modelValue, props.defaultValue, 'onChange'); const [innerVisible, setInnerVisible] = useDefaultValue( popupVisible, false, diff --git a/packages/components/upload/hooks/useUpload.ts b/packages/components/upload/hooks/useUpload.ts index 7d2b97f2f5..27a90f0cb3 100644 --- a/packages/components/upload/hooks/useUpload.ts +++ b/packages/components/upload/hooks/useUpload.ts @@ -23,7 +23,7 @@ export default function useUpload(props: TdUploadProps) { // TODO: Form 表单控制上传组件是否禁用 const { disabled, autoUpload, isBatchUpload, multiple, files, modelValue, defaultFiles } = toRefs(props); const { globalConfig, t, classPrefix } = useConfig('upload'); - const [uploadValue, setUploadValue] = useVModel(files, modelValue, defaultFiles.value, props.onChange, 'files'); + const [uploadValue, setUploadValue] = useVModel(files, modelValue, defaultFiles.value, 'onChange', 'files'); const xhrReq = ref<{ files: UploadFile[]; xhrReq: XMLHttpRequest }[]>([]); const toUploadFiles = ref([]); const sizeOverLimitMessage = ref(''); diff --git a/packages/pro-components/chat/chat-input.tsx b/packages/pro-components/chat/chat-input.tsx index 39f552e09b..9089f01f68 100644 --- a/packages/pro-components/chat/chat-input.tsx +++ b/packages/pro-components/chat/chat-input.tsx @@ -13,7 +13,7 @@ export default defineComponent({ const COMPONENT_NAME = usePrefixClass('chat'); const { globalConfig } = useConfig('chat'); const { value, modelValue } = toRefs(props); - const [textValue, setInnerValue] = useVModel(value, modelValue, props.defaultValue, props.onChange); + const [textValue, setInnerValue] = useVModel(value, modelValue, props.defaultValue, 'onChange'); // 按钮禁用, const disabled = computed(() => props.stopDisabled); // textarea禁用, diff --git a/packages/pro-components/chat/chat-reasoning.tsx b/packages/pro-components/chat/chat-reasoning.tsx index 8753bc457d..e01898b4b3 100644 --- a/packages/pro-components/chat/chat-reasoning.tsx +++ b/packages/pro-components/chat/chat-reasoning.tsx @@ -19,7 +19,7 @@ export default defineComponent({ collapsed, modelValue, props.defaultCollapsed, - props.onExpandChange, + 'onExpandChange', 'collapsed', ); diff --git a/packages/pro-components/chat/chat-sender.tsx b/packages/pro-components/chat/chat-sender.tsx index e673e75594..8b8200fa5c 100644 --- a/packages/pro-components/chat/chat-sender.tsx +++ b/packages/pro-components/chat/chat-sender.tsx @@ -18,7 +18,7 @@ export default defineComponent({ const COMPONENT_NAME = usePrefixClass('chat'); const { globalConfig } = useConfig('chat'); const { value, modelValue } = toRefs(props); - const [textValue, setInnerValue] = useVModel(value, modelValue, props.defaultValue, props.onChange); + const [textValue, setInnerValue] = useVModel(value, modelValue, props.defaultValue, 'onChange'); const focusFlag = ref(false); const showStopBtn = computed(() => props.loading || props.stopDisabled); diff --git a/packages/shared/hooks/useVModel/index.ts b/packages/shared/hooks/useVModel/index.ts index a996184015..942c15d7aa 100644 --- a/packages/shared/hooks/useVModel/index.ts +++ b/packages/shared/hooks/useVModel/index.ts @@ -7,10 +7,10 @@ export function useVModel( value: Ref, modelValue: Ref, defaultValue: T, - onChange: ChangeHandler, + eventPropName = 'onChange', propName = 'value', ): [Ref, ChangeHandler] { - const { emit, vnode } = getCurrentInstance(); + const { emit, vnode, proxy } = getCurrentInstance(); const internalValue: Ref = ref(); const vProps = vnode.props || {}; @@ -26,7 +26,7 @@ export function useVModel( modelValue, (newValue, ...args) => { emit('update:modelValue', newValue); - onChange?.(newValue, ...args); + proxy[eventPropName]?.(newValue, ...args); }, ]; } @@ -36,7 +36,7 @@ export function useVModel( value, (newValue, ...args) => { emit(`update:${propName}`, newValue); - onChange?.(newValue, ...args); + proxy[eventPropName]?.(newValue, ...args); }, ]; } @@ -46,7 +46,7 @@ export function useVModel( internalValue, (newValue, ...args) => { internalValue.value = newValue; - onChange?.(newValue, ...args); + proxy[eventPropName]?.(newValue, ...args); }, ]; }