ReactNative TextInput值不会在IOS上更新

时间:2018-05-31 11:07:52

标签: ios react-native expo

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屏幕上的值不跟随变量。 如果我输入

  

1 *#+

IOS屏幕上显示的

(控制台显示每个按键显示this.state.appCode为1),然后按,例如7,屏幕上显示的值更新为

  

17

所有文档都显示这是过滤输入的正确方法,在Android上它可以工作但不在IOS上

2 个答案:

答案 0 :(得分:3)

这是一个已知的错误 - 现在只有修复似乎恢复到2018年1月之前React Native:

https://github.com/facebook/react-native/issues/18874

(回答SO不会让我评论)

答案 1 :(得分:0)

解决方法可以是 - 在onChangeText上设置状态之前,首先检查更改的文本是否包含任何非数字值,如果是,则只是不更新​​状态。这样,它既可以在iOS和Android上运行,也不会在TextInput中看到非数字条目。

相关问题