Значение TextInput проп не принимает правильное значение состояния

Я пытаюсь построить поле ввода, которое будет принимать только цифры в качестве входных данных. Минимальное определение компонента, чтобы объяснить мою проблему, как показано ниже

type Props = {};
export default class App extends Component<Props> {
  constructor(props) {
    super(props);
    this.state = {
      text: 'PlaceHolder'
    }
  }

  sanitizeInput(input) {
    let sanitizedInput = input.replace(/[^0-9]/g, '');
    this.setState({text: sanitizedInput});
  }

  render() {
    console.log("In render - ", this.state.text);
    return (
      <View style={{flex: 1, justifyContent: 'center'}}>
        <TextInput
        style={{height: 40, borderColor: 'gray', borderWidth: 1}}
        onChangeText={(text) => this.sanitizeInput(text)}
        value={this.state.text}
      />
      </View>
    );
  }
}

Но когда я выполняю его, я не получаю желаемого результата. Кажется, что TextInput не соответствует значению пропущенного в него пропа. Console.log четко показывает желаемое значение для отображения в TextInput, но я не могу правильно получить это значение в TextInput устройства.

Видео с описанием моей проблемы выложено здесь

0 ответов

Другие вопросы по тегам