React Native TextInput onSubmitEditing запуск при каждом нажатии кнопки

#react-native #textinput #react-native-textinput

#react-native #textinput #react-native-textinput

Вопрос:

У меня возникают проблемы с запуском 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')
    );
}
 

Поведение, которого я надеюсь достичь, заключается в том, что оно запускается во время форматирования только при нажатии кнопки «Готово», чтобы закрыть клавиатуру ввода. Я буду полностью честен в том, что я не совсем уверен, как работает TextInput (т. Е. Я так смущен разницей между «значением» и «текстом»), поэтому я, вероятно, упускаю что-то очевидное здесь. Большое спасибо за вашу помощь.

Ответ №1:

Потому что при каждом нажатии кнопки (и при первой загрузке страницы) происходит повторный рендеринг… с вашим кодом он выполняется FormatTime … но он должен привязываться FormatTime как обработчик для onSubmitEditing события

Таким образом, вы передаете обработчик, а не вызов функции

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

Комментарии:

1. Большое вам спасибо за вашу помощь; это решило проблему немедленно. Мне нужно многому научиться…