基于React-Native 0.55的Expo SDK v27.0.0
我有一个值,我只想要数字值,所以我使用onChangeText过滤输入。在Android上,你会看到非数字值,但它会被擦除,而在IOS上,所有字符都会显示,直到按下另一个数字。代码如下:
state = {
appCode: ""
};
render() {
console.log(this.state.appCode);
return (
<View style={styles.container}>
<TextInput
label={"App Code"}
placeholder={"App Code"}
keyboardType="phone-pad"
maxLength={6}
onChangeText={text => {
this.setState({ appCode: text.replace(/\D/g, "") });
}}
value={this.state.appCode}
/>
</View>
);
}我可以在控制台上看到appCode的值正在正确更新,但是IOS屏幕上的值没有跟在变量后面。如果我进入
1*#+
它显示在IOS屏幕上(控制台显示每次按键的this.state.appCode为1),但随后按下,例如7,屏幕上显示的值将更新为
17
所有文档都显示,这是过滤输入的正确方法,在Android上有效,但在IOS上不起作用
发布于 2018-05-31 20:21:30
这是一个已知的仅限bug的修复,目前似乎恢复到2018年1月之前的React Native:
https://github.com/facebook/react-native/issues/18874
(这样回答不会让我只是评论)
发布于 2018-06-01 05:09:21
一种解决办法是-在onChangeText上设置状态之前,首先检查更改后的文本是否包含任何非数字值,如果包含,则不会更新状态。这样,它应该在iOS和安卓上都能工作,而且你也不会在TextInput中看到非数字条目。
https://stackoverflow.com/questions/50622904
复制相似问题