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