uni-app icon indicating copy to clipboard operation
uni-app copied to clipboard

uniapp v3 iOS 中事件被绑定到错误的组件上了

Open zhuscat opened this issue 2 years ago • 8 comments

问题描述 看我发的最小复现 demo,仅在 iOS 中有这个问题,textarea 的 input 事件实际上执行的是 doSomething 方法,看我评论里发的视频,当我输入之后,控制台中的输出是 doSomething 而不是 content content

复现步骤

  1. 最小可复现项目:https://github.com/zhuscat/uniapp-vue3-demo/tree/error-event-bind
  2. 分支 error-event-bind
  3. 查看 src/pages/index/index.vue
  4. 使用 iOS 系统,我的版本是 15.5,但我猜测其他版本也有问题
  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>

zhuscat avatar Jun 27 '22 04:06 zhuscat

WechatIMG43

zhuscat avatar Jun 27 '22 04:06 zhuscat

https://user-images.githubusercontent.com/14963619/175857771-fd2a1e75-8089-430a-839a-b1d2680382c0.mp4

zhuscat avatar Jun 27 '22 04:06 zhuscat

e0 并不是 onInput 对应的方法,而是 doSomething

zhuscat avatar Jun 27 '22 04:06 zhuscat

https://github.com/dcloudio/uni-app/issues/3448

fxy060608 avatar Jun 27 '22 05:06 fxy060608

有预期解决解决时间么? 可以明确一下什么情况下会出现这个 BUG 么? 这个 BUG 的通用的临时解决方式是什么?textarea 上面的 v-if 改成 v-show? 是不是要在官网上明确指出,感觉挺严重的问题

zhuscat avatar Jun 27 '22 05:06 zhuscat

https://developers.weixin.qq.com/community/develop/doc/0002a02800cd90b9632efeab55b000

fxy060608 avatar Jun 27 '22 07:06 fxy060608

使用版本:^3.0.0-alpha-3040520220408002

这个错误很容易复现,例如同时存在textarea与input组件,或者给textarea同时绑定@input事件与v-model,textarea的绑定事件就会错乱。 也算是比较严重的问题了,影响业务开发。

BlueDancers avatar Jul 14 '22 08:07 BlueDancers

使用版本:^3.0.0-alpha-3040520220408002

这个错误很容易复现,例如同时存在textarea与input组件,或者给textarea同时绑定@input事件与v-model,textarea的绑定事件就会错乱。 也算是比较严重的问题了,影响业务开发。

可以到微信社区顶一下,目前绕过的方案,就是不要让textarea的事件绑定发生变化(即在textarea之前没有循环,条件等动态生成的绑定事件的元素,如果有,可以让这些动态元素和textarea同时生成) https://developers.weixin.qq.com/community/develop/doc/0002a02800cd90b9632efeab55b000

fxy060608 avatar Jul 15 '22 12:07 fxy060608

可以单独写一个 textarea 组件,这样能解决问题

lxfljw avatar Nov 17 '22 06:11 lxfljw

https://github.com/dcloudio/uni-app/issues/3662#issuecomment-1318157352 楼上的方法是可以的,通过封装通用textarea组件,可以绕过这个bug,亲测有效,附上简易封装代码

jfengzzz avatar Jul 20 '23 08:07 jfengzzz