вводят значения, не проходящие валидацию? (Android)
Возможно ли избежать отрисовки символа, не удовлетворяющего регулярному выражению, чтобы при нажатии оного "дергания" не происходило?
<TextInput
value={this.state.text}
onChangeText={text => {
text = text.replace(/[0-9]/g, '')
this.setState({
text
})
}}
style={styles.input}
/>
https://github.com/facebook/react-native/issues/24585
Replàcе через эту сделаете
можно ведь просто сделать условие и по реге проверять перед сетСтейтом есть ли в тексте цифры
отредактировал: для уточнения приведены пример кода и гифка из поста (то есть проверка перед установкой значения в инпуте имеется)
та же самая проблема только я уже использовал библиотеку, проверку пробовал всё равно также
я что то типо токого делал input.setNativeProps({ text })
input - это ref
https://javascript.plainenglish.io/react-native-finding-a-fix-for-flickering-field-formatting-dc1923e97cc есть такой вариант а еще сами разработчики в доках на value# пишут, что можно ограничивать maxLength и обновлять его по мере надобности, то есть сделать так, чтобы при вводе неправильного символа maxLength был равен длине текущего значения и не было таких скачков, но реализовать это за несколько минут я не смог, это решение выглядит сложным если к нему грамотно подойти, т.к. надо сделать 2 последовательных обновления состояний (сначала maxLength потом value если оно валидно), если найдется время подумать и реализовать именно это решение, то будет круто если поделишься потом им здесь со всеми
Обсуждают сегодня