reactjs - 反应本机:当焦点放在TextInput上并且达到其限制时触发哪个函数仍然按下输入按钮
问题描述
我是反应原生的新手。我有 3 个 TextInput 字段t1, t2, t3
。当达到极限时,我已经完成了对下一个输入字段的关注。现在我陷入了这样一种情况,即我的文本输入字段以某种方式受到关注t1
并且t1
已经达到其最大限制。但是当我按下另一个输入时,它不会专注于下一个输入字段t2
。
<TextInput
onChangeText={text => this.setState({ v1: text })}
keyboardType='number-pad'
maxLength={1}
autoCompleteType={'off'}
autoFocus={true}
ref={ref => this.v1Ref = ref}
onChange={event => {
if (event.nativeEvent.text !== '') {
this.v2Ref.focus();
}
}}
/>
<TextInput
onChangeText={text => this.setState({ v2: text })}
keyboardType='number-pad'
maxLength={1}
autoCompleteType={'off'}
ref={ref => this.v2Ref = ref}
onChange={event => {
if (event.nativeEvent.text !== '') {
this.v3Ref.focus();
}
}}
onKeyPress={({ nativeEvent }) => {
if (nativeEvent.key === 'Backspace') {
if(this.state.v2== '')
this.v1Ref.focus(); //here it is focusing on field t1 on backspace press and then if I am trying to give another input It's not going to t2 because t1 has reached its limit.
}
}}
/>
解决方案
你的代码在我的电脑上运行
如果您使用的是 Android Emulator 此功能将不起作用,因为它是在文档中编写的
注意:在 Android 上,仅处理来自软键盘的输入,而不处理硬件键盘输入。
如果您使用的是模拟器,则需要使用鼠标而不是计算机键盘来按下手机内部的按钮
尝试在函数内部插入console.log,看看它是否有效
onKeyPress={({ nativeEvent }) => {
console.log('onKeyPress')
if (nativeEvent.key === 'Backspace') {
if(this.state.v2== '')
this.v1Ref.focus();
}
}}
推荐阅读
- python - 如何使用 selenium python 在输入标签中查找和写入
- javascript - 在 Promise 在 componentDidMount 中解析后反应 setState
- python - 在哪里放置 sys.exit() 以终止代码
- python-3.x - 数字识别:我从画布图像中得到相同的输出
- reactjs - 在reactjs甜甜圈图中,如何减小图表的宽度
- android - 使用 AWS API 的应用程序是否需要身份验证?
- python - 一个模型的多个反向 URL
- python - 如何使用python将xml文件转换为csv文件
- c# - 我无法在 C# 中使用 Jquery 和 Ajax 从控制器向 Razor 视图发送值
- django - 从 Apple 快捷方式访问时,对 API 的调用始终返回“未提供身份验证凭据”,但从 Postman 访问时则不返回