From 5e402ac25273c00a96871f835d6c03fc49f02e27 Mon Sep 17 00:00:00 2001
From: btea <2356281422@qq.com>
Date: Thu, 31 Jul 2025 15:44:12 +0800
Subject: [PATCH] fix(components): [input-number] dynamic precision render
value (#21558)
* fix(components): [input-number] dynamic precision render value
* chore: test case
---
.../__tests__/input-number.test.tsx | 19 +++++++++++++++++++
.../input-number/src/input-number.vue | 7 +++++++
2 files changed, 26 insertions(+)
diff --git a/packages/components/input-number/__tests__/input-number.test.tsx b/packages/components/input-number/__tests__/input-number.test.tsx
index 8624a1facc..b78f40a476 100755
--- a/packages/components/input-number/__tests__/input-number.test.tsx
+++ b/packages/components/input-number/__tests__/input-number.test.tsx
@@ -36,6 +36,25 @@ describe('InputNumber.vue', () => {
expect(wrapper.find('p').element.innerText).toBeUndefined()
})
+ test('dynamic change the precision value should correct re-render', async () => {
+ const num = ref(123.12)
+ const precision = ref(1)
+ const wrapper = mount(() => (
+ <>
+
+ >
+ ))
+ await nextTick()
+ expect(wrapper.find('input').element.value).toEqual('123.1')
+ precision.value = 2
+ await nextTick()
+ expect(wrapper.find('input').element.value).toEqual('123.12')
+ })
+
test('set modelValue undefined to display placeholder', async () => {
const inputText = ref(1)
const wrapper = mount(() => (
diff --git a/packages/components/input-number/src/input-number.vue b/packages/components/input-number/src/input-number.vue
index 8ec36e2d6d..73ef96c3e8 100755
--- a/packages/components/input-number/src/input-number.vue
+++ b/packages/components/input-number/src/input-number.vue
@@ -358,6 +358,13 @@ watch(
},
{ immediate: true }
)
+
+watch(
+ () => props.precision,
+ () => {
+ data.currentValue = verifyValue(props.modelValue)
+ }
+)
onMounted(() => {
const { min, max, modelValue } = props
const innerInput = input.value?.input as HTMLInputElement