React Native TextInput onSubmitEditing 每次按下按钮都会触发

问题描述

我在每次按下输入键盘当前页面第一次加载时触发 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 .. .but它应该绑定 FormatTime 作为 onSubmitEditing 事件的处理程序

这样你传递一个处理程序而不是一个函数调用

 onSubmitEditing = {() => FormatTime(value)}