#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. Большое вам спасибо за вашу помощь; это решило проблему немедленно. Мне нужно многому научиться…