Expo SDK v27.0.0基于React-Native 0.55
我有一个值我只想要数值,所以我使用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屏幕上的值不跟随变量。 如果我输入
IOS屏幕上显示的1 *#+
(控制台显示每个按键显示this.state.appCode为1),然后按,例如7,屏幕上显示的值更新为
17
所有文档都显示这是过滤输入的正确方法,在Android上它可以工作但不在IOS上
答案 0 :(得分:3)
这是一个已知的错误 - 现在只有修复似乎恢复到2018年1月之前React Native:
https://github.com/facebook/react-native/issues/18874
(回答SO不会让我评论)
答案 1 :(得分:0)
解决方法可以是 - 在onChangeText上设置状态之前,首先检查更改的文本是否包含任何非数字值,如果是,则只是不更新状态。这样,它既可以在iOS和Android上运行,也不会在TextInput中看到非数字条目。