React-Native TextInput предотвращает использование по умолчанию для контролируемого ввода - PullRequest
0 голосов
/ 26 мая 2019

Поэтому я использую свое состояние для управления вводом текста, но когда я вводю символ, я не хочу, чтобы этот символ появлялся сразу. Вот что происходит: 1. Я сосредоточен на вводе текста 2. Я печатаю символ. 3. Символ быстро появляется при вводе текста. 4. Символ быстро исчезает, и значение возвращается в состояние, потому что состояние еще не изменилось.

Мне интересно, как я могу предотвратить появление персонажа в первую очередь, если состояние не изменилось.

Вот простой пример:

state = {
 myValue: 'hello'
}

changedText = value => {
  //Nothing here yet
}

...
render(){
  return(
    <Input
      value={this.state.myValue}
      keyboardType="numeric"
      onChangeText={this.highIntervalDurationChange}
    />
  );
}

Как видите, в этом нет ничего сложного, я просто пытаюсь найти способ, чтобы не нажатый символ не появлялся сразу при нажатии, потому что в данный момент он появляется и возвращается в состояние. (Очевидно, я изменю состояние после того, как смогу выяснить, как предотвратить появление по умолчанию.) Я также попытался установить для editable значение false, и это просто делает его таким, что я вообще не могу его редактировать. Спасибо!

Ответы [ 3 ]

0 голосов
/ 27 мая 2019

Проблема в стоимости вашего input = this.state.myValue. Помните, что реагирующий-нативный - это реакция https://reactjs.org/docs/forms.html#controlled-components. Поскольку состояние не обновляется, вход не будет обновляться сам. Небольшое изменение, которое вы видите, состоит в том, что собственный ввод получает новое значение, но реагирует, запомните это значение, которое всегда равно hello причине вашего состояния. Это похоже на то, что вы не получаете обновление, потому что вы не вызываете его внутри changeText. Попробуйте это.

state = {
 myValue: 'hello'
}

changedText = value => {
  this.setState({ myValue: value })
}

...
render(){
  return(
    <Input
      value={this.state.myValue}
      keyboardType="numeric"
      onChangeText={this.changedText}
    />
  );
}
0 голосов
/ 27 мая 2019

вы неправильно вызываете onChangeText из TextInput.сравните приведенный ниже код с вашим.

state = {
  myValue: 'hello'
}

changedText = value => {
  this.setState({ myValue: value })
}

...
render(){
  return(
    <Input
      value={this.state.myValue}
      keyboardType="numeric"
      onChangeText={(text) => this.changedText(text)}
    />
  );
}
0 голосов
/ 27 мая 2019

с этим? я не очень понимаю, чего ты хочешь https://facebook.github.io/react-native/docs/0.6/textinput#bufferdelay

...