fix: withDefaultPlaceholder中将placeholder修改为computed, 解决后续使用updateSchema无法正常更新显示placeholder(响应式问题)

This commit is contained in:
dap 2025-03-14 16:09:37 +08:00
parent f415664acf
commit 2e064604c1
3 changed files with 23 additions and 7 deletions

View File

@ -1,3 +1,9 @@
# 1.2.3
**BUG FIX**
- `withDefaultPlaceholder`中将`placeholder`修改为computed, 解决后续使用`updateSchema`无法正常更新显示placeholder(响应式问题)
# 1.2.2
**FEATURES**

View File

@ -1,6 +1,6 @@
{
"name": "@vben/web-antd",
"version": "1.2.2",
"version": "1.2.3",
"homepage": "https://vben.pro",
"bugs": "https://github.com/vbenjs/vue-vben-admin/issues",
"repository": {

View File

@ -8,7 +8,7 @@ import type { Component } from 'vue';
import type { BaseFormComponentType } from '@vben/common-ui';
import type { Recordable } from '@vben/types';
import { defineComponent, getCurrentInstance, h, ref } from 'vue';
import { computed, defineComponent, getCurrentInstance, h, ref } from 'vue';
import { ApiComponent, globalShareState, IconPicker } from '@vben/common-ui';
import { $t } from '@vben/locales';
@ -49,10 +49,16 @@ const withDefaultPlaceholder = <T extends Component>(
inheritAttrs: false,
name: component.name,
setup: (props: any, { attrs, expose, slots }) => {
const placeholder =
/**
* 使computed updateSchema更新的placeholder无法显示()
*/
const placeholder = computed(
() =>
props?.placeholder ||
attrs?.placeholder ||
$t(`ui.placeholder.${type}`);
$t(`ui.placeholder.${type}`),
);
// 透传组件暴露的方法
const innerRef = ref();
const publicApi: Recordable<any> = {};
@ -66,7 +72,11 @@ const withDefaultPlaceholder = <T extends Component>(
}
});
return () =>
h(component, { ...props, ...attrs, placeholder, ref: innerRef }, slots);
h(
component,
{ ...props, ...attrs, placeholder: placeholder.value, ref: innerRef },
slots,
);
},
});
};