由于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
会导致相同的行为。
答案 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>
);
}
}