每次按下按钮都会触发本机 TextInput onSubmitEditing
React Native TextInput onSubmitEditing firing with every button press
我在每次按下输入键盘的按钮时以及在首次加载当前页面时触发 onSubmitEditing 时遇到问题(这部分特别令人费解)。 TextInput代码如下:
const TimerInput = () => {
const [ value, onChangeText ] = React.useState('');
return (
<TextInput
style={{
backgroundColor: ColorScheme.Orange.e,
borderRadius: 10,
borderWidth: 0,
fontSize: 25,
height: 60,
textAlign: 'center',
shadowColor: 'gray',
shadowRadius: 10,
width: '80%',
}}
keyboardType = 'number-pad'
onSubmitEditing = {FormatTime(value)}
onChangeText = { text => onChangeText(text) }
placeholder = { ' Hours : Minutes : Seconds ' }
returnKeyType = 'done'
value = {value}
/>
);
}
FormatTime 函数此刻只是写入控制台,而我一直在尝试解决这个问题:
FormatTime = () => {
return (
console.log('test')
);
}
我希望实现的行为是 运行 FormatTime 仅当按下“完成”按钮关闭输入键盘时。老实说,我不完全确定 TextInput 是如何工作的(即我对“值”和“文本”之间的区别感到很困惑),所以我可能在这里遗漏了一些明显的东西。非常感谢您的帮助。
因为每次按下按钮(以及首次加载页面时),都会重新呈现...使用您的代码,它 执行 FormatTime
.. .但它应该 绑定 FormatTime
作为 onSubmitEditing
事件
的处理程序
这样你传递的是处理程序而不是函数调用
onSubmitEditing = {() => FormatTime(value)}
我在每次按下输入键盘的按钮时以及在首次加载当前页面时触发 onSubmitEditing 时遇到问题(这部分特别令人费解)。 TextInput代码如下:
const TimerInput = () => {
const [ value, onChangeText ] = React.useState('');
return (
<TextInput
style={{
backgroundColor: ColorScheme.Orange.e,
borderRadius: 10,
borderWidth: 0,
fontSize: 25,
height: 60,
textAlign: 'center',
shadowColor: 'gray',
shadowRadius: 10,
width: '80%',
}}
keyboardType = 'number-pad'
onSubmitEditing = {FormatTime(value)}
onChangeText = { text => onChangeText(text) }
placeholder = { ' Hours : Minutes : Seconds ' }
returnKeyType = 'done'
value = {value}
/>
);
}
FormatTime 函数此刻只是写入控制台,而我一直在尝试解决这个问题:
FormatTime = () => {
return (
console.log('test')
);
}
我希望实现的行为是 运行 FormatTime 仅当按下“完成”按钮关闭输入键盘时。老实说,我不完全确定 TextInput 是如何工作的(即我对“值”和“文本”之间的区别感到很困惑),所以我可能在这里遗漏了一些明显的东西。非常感谢您的帮助。
因为每次按下按钮(以及首次加载页面时),都会重新呈现...使用您的代码,它 执行 FormatTime
.. .但它应该 绑定 FormatTime
作为 onSubmitEditing
事件
这样你传递的是处理程序而不是函数调用
onSubmitEditing = {() => FormatTime(value)}