uni-app vue3 nvue textarea 设置了 auto-height 高度不会自适应直接显示textarea的默认高度
uni-app vue3 nvue textarea 设置了 auto-height 高度不会自适应直接显示textarea的默认高度
| 开发环境 | 版本号 | 项目创建方式 |
|---|---|---|
| Windows | Windows11 | HBuilderX |
产品分类:
uniapp/App
PC开发环境操作系统:
Windows
HBuilderX类型:
正式
HBuilderX版本号:
4.85
手机系统:
Android
手机系统版本号:
Android 15
手机厂商:
vivo
手机机型:
vivo iqoo12
页面类型:
nvue
vue版本:
vue3
打包方式:
云端
示例代码:
<textarea auto-height />
操作步骤:
<textarea auto-height />
预期结果:
高度自适应,只显示一行,类似input输入框
实际结果:
高度不自适应,直接显示textarea的默认高度,默认高度估计有150px
bug描述:
vue3 nvue textarea 设置了 auto-height,高度不会自适应,直接显示textarea的默认高度
更多关于uni-app vue3 nvue textarea 设置了 auto-height 高度不会自适应直接显示textarea的默认高度的实战教程也可以访问 https://www.itying.com/category-93-b0.html
vue2 模式下运行是正常的
更多关于uni-app vue3 nvue textarea 设置了 auto-height 高度不会自适应直接显示textarea的默认高度的实战教程也可以访问 https://www.itying.com/category-93-b0.html
在 uni-app 的 nvue 页面中,auto-height 属性在 Vue3 环境下确实存在兼容性问题。这是由于 nvue 的渲染机制与 Vue3 的响应式系统尚未完全适配导致的。
解决方案:
- 使用
:style动态绑定高度,结合@input事件计算内容高度
<textarea
:style="{height: textareaHeight + 'px'}"
@input="onInput"
v-model="text"
/>
const textareaHeight = ref(40) // 初始高度
const onInput = (e) => {
// 根据行数计算新高度,每行约20px
const lines = e.detail.value.split('\n').length
textareaHeight.value = Math.max(40, lines * 20)
}
- 使用条件编译针对不同平台处理
<!-- #ifdef APP-NVUE -->
<textarea :style="{height: dynamicHeight}" />
<!-- #endif -->
<!-- #ifndef APP-NVUE -->
<textarea auto-height />
<!-- #endif -->

