From 74a136f90e7d036aa7872a2a7c4748736dcea127 Mon Sep 17 00:00:00 2001 From: neverland <chenjiahan@youzan.com> Date: Sun, 24 Oct 2021 17:50:18 +0800 Subject: [PATCH] fix(Field): adjust textarea size when focus/blur (#9719) --- packages/vant/src/field/Field.tsx | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/packages/vant/src/field/Field.tsx b/packages/vant/src/field/Field.tsx index d1b3acf5d..40ff16606 100644 --- a/packages/vant/src/field/Field.tsx +++ b/packages/vant/src/field/Field.tsx @@ -297,9 +297,17 @@ export default defineComponent({ const blur = () => inputRef.value?.blur(); const focus = () => inputRef.value?.focus(); + const adjustTextareaSize = () => { + const input = inputRef.value; + if (props.type === 'textarea' && props.autosize && input) { + resizeTextarea(input, props.autosize); + } + }; + const onFocus = (event: Event) => { state.focused = true; emit('focus', event); + nextTick(adjustTextareaSize); // readonly not work in legacy mobile safari const readonly = getProp('readonly'); @@ -313,6 +321,7 @@ export default defineComponent({ updateValue(getModelValue(), 'onBlur'); emit('blur', event); validateWithTrigger('onBlur'); + nextTick(adjustTextareaSize); resetScroll(); }; @@ -364,13 +373,6 @@ export default defineComponent({ emit('keypress', event); }; - const adjustTextareaSize = () => { - const input = inputRef.value; - if (props.type === 'textarea' && props.autosize && input) { - resizeTextarea(input, props.autosize); - } - }; - const renderInput = () => { const controlClass = bem('control', [ getProp('inputAlign'),