首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IOS上的ReactNative TextInput值不更新

IOS上的ReactNative TextInput值不更新
EN

Stack Overflow用户
提问于 2018-05-31 19:07:52
回答 2查看 1.9K关注 0票数 1

基于React-Native 0.55的Expo SDK v27.0.0

我有一个值,我只想要数字值,所以我使用onChangeText过滤输入。在Android上,你会看到非数字值,但它会被擦除,而在IOS上,所有字符都会显示,直到按下另一个数字。代码如下:

代码语言:javascript
复制
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上不起作用

EN

回答 2

Stack Overflow用户

发布于 2018-05-31 20:21:30

这是一个已知的仅限bug的修复,目前似乎恢复到2018年1月之前的React Native:

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

(这样回答不会让我只是评论)

票数 3
EN

Stack Overflow用户

发布于 2018-06-01 05:09:21

一种解决办法是-在onChangeText上设置状态之前,首先检查更改后的文本是否包含任何非数字值,如果包含,则不会更新状态。这样,它应该在iOS和安卓上都能工作,而且你也不会在TextInput中看到非数字条目。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50622904

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档