uni-app textarea 有时候重新赋值会闪退
uni-app textarea 有时候重新赋值会闪退
测试过的手机:
华为mate 20 pro
操作步骤:
- 有时候会出现 快速更新值的时候
预期结果:
- 不要闪退
实际结果:
- 闪退
bug描述:
textarea 有时候重新赋值会闪退 也有其他帖子提过 https://ask.dcloud.net.cn/question/112252 我的是充下一个页面返回更新值 有时候会闪退 试了好久才找到这个问题 没有log 使用bugly会有报错,看附件

| 产品分类 | PC开发环境操作系统 | PC开发环境操作系统版本号 | HBuilderX类型 | HBuilderX版本号 | 手机系统 | 手机厂商 | 页面类型 | vue版本 | 打包方式 | 项目创建方式 |
|---|---|---|---|---|---|---|---|---|---|---|
| uniapp/App | Mac | 13.3.1 | 正式 | 3.99 | 全部 | 华为 | nvue | vue2 | 云端 | HBuilderX |
更多关于uni-app textarea 有时候重新赋值会闪退的实战教程也可以访问 https://www.itying.com/category-93-b0.html
HBuilderX 4.04.2024031519-alpha 已修复。
更多关于uni-app textarea 有时候重新赋值会闪退的实战教程也可以访问 https://www.itying.com/category-93-b0.html
安卓好了 苹果坏了 苹果闪退 有时候还不弹出键盘 有时写两行键盘自动还会消失
使用计算性属性会有问题 目前改成data定义 好像没问题了
还是不行 多个textarea 有时候还是会闪退
麻烦提供一个可以复现的demo
后面有时间我搞一个 延时赋值有个帖子这么说 试了下 目前好像没啥问题
麻烦看下附件 现在我用的v-model赋值的 比:value赋值 闪退概率大 如果第一次没有闪退 返回首页重新进入几次试试 或者杀掉app重新进
demo
收到
回复 DCloud_Android_THB: 有消息回复下哈 等着这个问题解决上架
回复 海角: 点了三十多次 跳转 按钮也没有崩溃
回复 DCloud_Android_THB: 视频怎么私发你 按照我的视频在操作试试
回复 海角: 虽然我这边不会崩溃,但是我在控制台看到了异常被捕获,你的 my-text 内的text 样式 lineHeight:lineHeight+‘rpx’ 是undefined
回复 DCloud_Android_THB: 是的 没有给默认值 这个应该没事 麻烦你按照我说的再操作下 点过复制回来后如果没有闪退,你再返回到最顶级页面,重新进去再点击复制 这样重复几次 就会复现 只点复制按钮多次 复现不了 我录的视频不知道怎么发你
回复 DCloud_Android_THB: 目前我改成不是计算性属性赋值会好点 按照之前的那个帖子说的延时赋值 我试了 基本没问题 但是这个问题感觉还是内部的问题
回复 海角: 我这边复现了
回复 DCloud_Android_THB: 好的 麻烦看看什么原因
在 uni-app 中使用 textarea 组件时,如果遇到重新赋值导致闪退的问题,可能是由于以下几个原因导致的。以下是一些可能的原因和解决方案:
1. 数据绑定问题
- 原因: 如果
textarea的value或v-model绑定的数据更新过于频繁或数据量过大,可能会导致页面渲染异常,甚至闪退。 - 解决方案: 确保数据更新是合理的,避免频繁更新大数据量。可以使用
debounce或throttle来限制更新频率。
<textarea v-model="content" [@input](/user/input)="handleInput"></textarea>
export default {
data() {
return {
content: ''
};
},
methods: {
handleInput: _.debounce(function(event) {
this.content = event.detail.value;
}, 300)
}
};
2. 内存泄漏
- 原因: 如果
textarea组件绑定的数据量过大,可能会导致内存泄漏,进而导致页面崩溃。 - 解决方案: 尽量避免在
textarea中处理过大的数据。如果必须处理大量数据,可以考虑分页或分段加载。
3. 组件更新问题
- 原因: 在某些情况下,
textarea组件的更新可能会导致页面重新渲染,进而引发闪退。 - 解决方案: 确保
textarea的更新是必要的,避免不必要的更新。可以使用key属性来强制重新渲染组件。
<textarea :key="textareaKey" v-model="content"></textarea>
export default {
data() {
return {
content: '',
textareaKey: 0
};
},
methods: {
resetTextarea() {
this.content = '';
this.textareaKey += 1; // 强制重新渲染 textarea
}
}
};
4. 平台兼容性问题
- 原因: 不同平台(如 iOS、Android、H5)对
textarea的处理方式可能不同,某些平台可能存在兼容性问题。 - 解决方案: 检查是否有特定平台的兼容性问题,并针对不同平台进行适配。可以使用
uni.getSystemInfoSync()获取平台信息,并根据平台进行不同的处理。
const systemInfo = uni.getSystemInfoSync();
if (systemInfo.platform === 'ios') {
// iOS 平台特殊处理
} else if (systemInfo.platform === 'android') {
// Android 平台特殊处理
}


