diff --git a/packages/components/input/src/input.vue b/packages/components/input/src/input.vue index a3078b71d6..132fa49476 100644 --- a/packages/components/input/src/input.vue +++ b/packages/components/input/src/input.vue @@ -313,6 +313,7 @@ const suffixVisible = computed( const [recordCursor, setCursor] = useCursor(input) useResizeObserver(textarea, (entries) => { + onceInitSizeTextarea() if (!isWordLimitVisible.value || props.resize !== 'both') return const entry = entries[0] const { width } = entry.contentRect @@ -353,6 +354,20 @@ const resizeTextarea = () => { } } +const createOnceInitResize = (resizeTextarea: () => void) => { + let isInit = false + return () => { + if (isInit || !props.autosize) return + const isElHidden = textarea.value?.offsetParent === null + if (!isElHidden) { + resizeTextarea() + isInit = true + } + } +} +// fix: https://github.com/element-plus/element-plus/issues/12074 +const onceInitSizeTextarea = createOnceInitResize(resizeTextarea) + const setNativeInputValue = () => { const input = _ref.value if (!input || input.value === nativeInputValue.value) return