React Native-无法在Android上的TextInput onChangeText回调中修改文本

时间:2019-02-20 21:52:54

标签: react-native

由于React Native中有一个记录良好的问题,针对TextInput的autoCapitalize在Android上无法正常工作。我试图通过手动将onChangeText()回调中的文本大写来解决此问题:

onchgtext(newval)
{
  this.s8 = newval.toUpperCase();
  this.forceUpdate();
}

render()
{
   ...
   <TextInput value={ this.s8 } 
      onChangeText={ (newval) => { this.onchgtext(newval) } } 
      ...
   />
   ...
}

不幸的是,修改文本会导致TextInput无法正常工作:备用击键会导致重复整个先前的文本,但前提是击键是小写。

因此,输入1234会显示1234;输入ABCD会显示ABCD;但是输入abcd会得到AABCAABCD

任何想法为什么会发生这种情况,以及如何解决?请注意,使用onChange而不是onChangeText会导致相同的行为。

1 个答案:

答案 0 :(得分:0)

您可以使用状态来尝试类似的事情吗?

export default class App extends Component<Props> {
  constructor(props) {
    super(props);
    this.state = { text: 'Text' };
  }
  render() {
    return (
      <View>
        <TextInput
          onChangeText={(text) => {
            this.setState({ text: text.toUpperCase() });
          }}
          value={this.state.text}
        />
      </View>
    );
  }
}