taro
taro copied to clipboard
Input,TextArea标签 使用value进行双向绑定。快速输入跟快速删除时onInput setValue value会闪烁,显示旧的value
相关平台
微信小程序
小程序基础库: 2.30.0 使用框架: React
复现步骤
"const onTextAreaInput = useCallback((e) => { setCommentText(e.detail.value); }, []);"
"<Textarea value={commentText} onInput={onTextAreaInput}/>"
在输入框快速输入
期望结果
希望能准确展示value值。不闪烁 不显示旧的value
实际结果
快速输入跟删除会闪烁,闪现旧的value
环境信息
👽 Taro v3.5.6
Taro CLI 3.5.6 environment info:
System:
OS: macOS 10.14.5
Shell: 3.2.57 - /bin/bash
Binaries:
Node: 16.19.1 - /usr/local/bin/node
Yarn: 1.22.10 - /usr/local/bin/yarn
npm: 8.19.3 - /usr/local/bin/npm
npmPackages:
@tarojs/cli: 3.5.12 => 3.5.12
@tarojs/components: 3.5.12 => 3.5.12
@tarojs/helper: 3.5.12 => 3.5.12
@tarojs/mini-runner: 3.5.12 => 3.5.12
@tarojs/plugin-framework-react: 3.5.12 => 3.5.12
@tarojs/plugin-platform-weapp: 3.5.12 => 3.5.12
@tarojs/react: 3.5.12 => 3.5.12
@tarojs/router: 3.5.12 => 3.5.12
@tarojs/runtime: 3.5.12 => 3.5.12
@tarojs/shared: 3.5.12 => 3.5.12
@tarojs/taro: 3.5.12 => 3.5.12
@tarojs/webpack-runner: 3.5.12 => 3.5.12
@tarojs/webpack5-runner: 3.5.12 => 3.5.12
babel-preset-taro: 3.5.12 => 3.5.12
eslint-config-taro: 3.5.12 => 3.5.12
react: ^18.2.0 => 18.2.0
taro-ui: ^3.1.0-beta.2 => 3.1.0-beta.2
@day-day-sleep 这块最近有调整,可以升级到最新版本后再试试
@Chen-jj 升级到最新版本3.6.7 仍然会出现该问题。IOS下尤为严重,中文输入基本上不能准确打字
在 3.6.6 和 3.6.8 都没能复现你说的问题,能否提供一个完整的 demo 仓库,我们再根据你提供的 demo 来进行一次排查
@xuanzebin https://github.com/day-day-sleep/taro-demo 页面越复杂,元素越多就越严重
@Chen-jj @xuanzebin 能重现吗? 大概什么时候会修复这个问题
我也有这问题,就算 Textarea 和 Input 不设置 value,不设置onInput和setState也会触发这个问题 taro:3.6.7 小程序基础库: 2.32.x 安卓微信: 8.0.37
但是如果我用的是从Google 商店下载的微信(8.0.33)就没有这个问题。这是原生的webview和腾讯x5性能的区别吗?
@Chen-jj @xuanzebin 能重现吗? 大概什么时候会修复这个问题
能复现,然后排查出原因是因为 input 组件异步更新和用户输入存在冲突的问题,这块还在想办法解决,还需要一些时间来解决
vue3 taro3.6.8版本也有这个问题 求尽快修复 项目很急 感谢
大概什么时候能修复呢?
好了吗
这么严重的问题,竟然没人修
想问这块啥时候能修复呢?使用起来真的好影响体验
页面复杂,或者输入框一多的情况下就极容易出现这种情况。
@Chen-jj @xuanzebin 希望能尽快修复这个问题。用户体验非常差
太严重了!难受!
有什么办法可以规避吗?
有什么办法可以规避吗?
给其他人一个规避方案:用 CustomWrapper 包裹 input 或 TextArea,提升其位置,可以有效规避这个问题。
https://github.com/Fairfarren/taro-input-delay
做了一个规避方案的demo
一种采用CustomWrapper包裹,一种使用useRef
前者能解决大多数场景,后者在iphone7上有效改善输入问题