uni-app
uni-app copied to clipboard
uniapp v3 iOS 中事件被绑定到错误的组件上了
问题描述
看我发的最小复现 demo,仅在 iOS 中有这个问题,textarea 的 input 事件实际上执行的是 doSomething 方法,看我评论里发的视频,当我输入之后,控制台中的输出是 doSomething
而不是 content content
复现步骤
- 最小可复现项目:https://github.com/zhuscat/uniapp-vue3-demo/tree/error-event-bind
- 分支 error-event-bind
- 查看 src/pages/index/index.vue
- 使用 iOS 系统,我的版本是 15.5,但我猜测其他版本也有问题
- 小程序基础库版本是 2.24.7
预期结果 正确的事件绑定
实际结果 错误的事件绑定
系统信息:
- 发行平台: 微信小程序
- 操作系统:iOS 15.5
- uni-app版本:3.0.0-alpha-3041520220609002
- 设备信息:iPhone 12 Pro Max(其他机型也一样,与机型无关)
补充信息 如果我在最外层套一个 v-if,比 showFoo 更迟变为 true,就没有这个问题了,比如这样:
<view class="content" v-if="showFoo">
<Foo v-if="showFoo" :item="item" @something="doSomething" />
<textarea
:value="content"
@input="onInput"
@blur="onBlur"
@focus="onFocus"
/>
</view>
https://user-images.githubusercontent.com/14963619/175857771-fd2a1e75-8089-430a-839a-b1d2680382c0.mp4
e0
并不是 onInput
对应的方法,而是 doSomething
https://github.com/dcloudio/uni-app/issues/3448
有预期解决解决时间么? 可以明确一下什么情况下会出现这个 BUG 么? 这个 BUG 的通用的临时解决方式是什么?textarea 上面的 v-if 改成 v-show? 是不是要在官网上明确指出,感觉挺严重的问题
https://developers.weixin.qq.com/community/develop/doc/0002a02800cd90b9632efeab55b000
使用版本:^3.0.0-alpha-3040520220408002
这个错误很容易复现,例如同时存在textarea与input组件,或者给textarea同时绑定@input事件与v-model,textarea的绑定事件就会错乱。 也算是比较严重的问题了,影响业务开发。
使用版本:^3.0.0-alpha-3040520220408002
这个错误很容易复现,例如同时存在textarea与input组件,或者给textarea同时绑定@input事件与v-model,textarea的绑定事件就会错乱。 也算是比较严重的问题了,影响业务开发。
可以到微信社区顶一下,目前绕过的方案,就是不要让textarea的事件绑定发生变化(即在textarea之前没有循环,条件等动态生成的绑定事件的元素,如果有,可以让这些动态元素和textarea同时生成) https://developers.weixin.qq.com/community/develop/doc/0002a02800cd90b9632efeab55b000
可以单独写一个 textarea 组件,这样能解决问题
https://github.com/dcloudio/uni-app/issues/3662#issuecomment-1318157352 楼上的方法是可以的,通过封装通用textarea组件,可以绕过这个bug,亲测有效,附上简易封装代码