taro-ui icon indicating copy to clipboard operation
taro-ui copied to clipboard

AtInput 微信小程序 ios端 快速输入或者删除 会有字符不跟手的情况

Open wzch333 opened this issue 4 years ago • 12 comments

微信小程序 ios端 "@tarojs/cli": "3.0.16", "taro-ui": "^3.0.0-alpha.3"

handleChange(value, acc) { this.setState({ [acc]: value, }); return value; } <AtInput name="val" title="val:" type="text" placeholder="请输入" onChange={e => { this.handleChange(e, 'val'); }} value={this.state.val} />

在界面中的字符如果快速输入会有时候输不进去 删除的时候 会有字符删不掉的情况

wzch333 avatar Nov 12 '20 09:11 wzch333

欢迎提交 Issue~

如果你提交的是 bug 报告,请务必遵循 Issue 模板的规范,尽量用简洁的语言描述你的问题,最好能提供一个稳定简单的复现。🙏🙏🙏

如果你的信息提供过于模糊或不足,或者已经其他 issue 已经存在相关内容,你的 issue 有可能会被关闭。

Good luck and happy coding~

taro-ui-bot[bot] avatar Nov 12 '20 09:11 taro-ui-bot[bot]

是不是,打了字后会被删掉。删掉的时候删除又出现出现?

jianguooo avatar Nov 24 '20 07:11 jianguooo

是不是,打了字后会被删除掉。删除掉的时候删除又出现出现?

是的,有好的解决办法吗

wzch333 avatar Nov 25 '20 07:11 wzch333

是不是,打了字后会被删掉。删掉的时候删除又出现出现?

@jianguooo

wzch333 avatar Nov 30 '20 09:11 wzch333

解决办法:使用onBlur失去焦点事件,失去焦点时才setState。需要注意:如果界面上有按钮,用户输入完了,直接点击按钮,按钮点击事件会先于输入框的onBlur事件,需要做处理。

猜测原因,render界面花时间太长,比如:更新界面需要500ms,用户输入一个字符需要250ms,250ms时,用户输入了1,此时开始render,500ms后更新完成,此时用户又输入了两个个字符2和3,此时就会把后两次输入的2和3去掉,换成render后的1。如此循环,就会导致不跟手。

Shawn-zhao avatar Dec 09 '20 03:12 Shawn-zhao

是不是,打了字后会被删除掉。删除掉的时候删除又出现出现?

是的,有好的解决办法吗

使用onBlur失去焦点事件,失去焦点时才setState。需要注意:如果界面上有按钮,用户输入完了,直接点击按钮,按钮点击事件会先于输入框的onBlur事件,需要做处理。

Shawn-zhao avatar Dec 09 '20 03:12 Shawn-zhao

是不是,打了字后会被删除掉。删除掉的时候删除又出现出现?

是的,有好的解决办法吗

使用onBlur失去焦点事件,失去焦点时才setState。需要注意:如果界面上有按钮,用户输入完了,直接点击按钮,按钮点击事件会先于输入框的onBlur事件,需要做处理。

好的 非常感谢 我去试试

wzch333 avatar Dec 15 '20 08:12 wzch333

是不是,打了字后会被删除掉。删除掉的时候删除又出现出现?

是的,有好的解决办法吗

使用onBlur失去焦点事件,失去焦点时才setState。需要注意:如果界面上有按钮,用户输入完了,直接点击按钮,按钮点击事件会先于输入框的onBlur事件,需要做处理。

好的 非常感谢 我去试试

你解决问题了吗

jianguooo avatar Dec 17 '20 00:12 jianguooo

是不是,打了字后会被删除掉。删除掉的时候删除又出现出现?

是的,有好的解决办法吗

使用onBlur失去焦点事件,失去焦点时才setState。需要注意:如果界面上有按钮,用户输入完了,直接点击按钮,按钮点击事件会先于输入框的onBlur事件,需要做处理。

好的 非常感谢 我去试试

你解决问题了吗

解决了,onBlur和onChange配合使用,onChange记录改变后的数据,onBlur时setState

Shawn-zhao avatar Dec 17 '20 01:12 Shawn-zhao

把这个 AtInput 当非受控组件用就可以。用一个全局变量在 onChange 里面记录一下当前数据即可。

xdoer avatar Jan 21 '21 09:01 xdoer

把这个 AtInput 当非受控组件用就可以。用一个全局变量在 onChange 里面记录一下当前数据即可。

怎么改为非受控组件呢

superchangme avatar Apr 03 '22 13:04 superchangme

是不是,打了字后会被删除掉。删除掉的时候删除又出现出现?

是的,有好的解决办法吗

使用onBlur失去焦点事件,失去焦点时才setState。需要注意:如果界面上有按钮,用户输入完了,直接点击按钮,按钮点击事件会先于输入框的onBlur事件,需要做处理。

好的 非常感谢 我去试试

你解决问题了吗

解决了,onBlur和onChange配合使用,onChange记录改变后的数据,onBlur时setState

可以给一下例子吗,感激不尽

kuoyio avatar Mar 07 '24 09:03 kuoyio