【问题标题】:ReactNative TextInput value doesn't update on IOSReactNative TextInput 值不会在 IOS 上更新
【发布时间】:2018-05-31 11:07:51
【问题描述】:

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 上不行

【问题讨论】:

    标签: ios react-native expo


    【解决方案1】:

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

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

    (回答为 SO 不会让我只是评论)

    【讨论】:

    • 感谢@dan674,我一直在寻找答案,但没有找到该问题
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2016-05-07
      • 2017-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多