【发布时间】:2017-04-05 13:52:51
【问题描述】:
编辑:经过进一步检查,这似乎只发生在 Android 6.0.1 中。在使用 6.0 的多台设备上进行了尝试,这不是问题。
我有一个非常简单的 React Native 代码 sn-p,我想在其中清除 TextInput 中的文本。它看起来有点像这样:
state = {
v: ""
};
_changeText = v => {
this.setState({ v });
};
clear = () => {
this.textInputRef.clear();
}
render() {
return (
<View style={styles.container}>
<TouchableOpacity onPress={this.clear}>
<Text> Clear </Text>
</TouchableOpacity>
<TextInput
ref={ref => this.textInputRef = ref}
value={this.state.v}
onChangeText={this._changeText}
/>
</View>
);
}
现在我期望的行为是让文本输入保持焦点,并清除文本。这就是发生的事情 - 但是,当我开始在键盘上输入内容时,我之前清除的文本会重新出现在文本输入中。显然,这种文本的持久性并不是真正需要的。
你们中有人遇到过这个问题吗?是 RN 错误还是有什么方法可以避免这种行为而无需模糊键盘?
这里有一个小sn-p来澄清我的意思:https://snack.expo.io/H1S9b5Mpe。
如果您开始输入,请按清除,然后继续输入,之前显示的文本将出现在您新输入的文本之前。
【问题讨论】:
-
你试过清除状态吗?
-
您可以在此处找到此问题的解决方法:stackoverflow.com/questions/37798584/…
-
解决方法确实有效。这显然不理想,但我们仅将其应用于有问题的设备。
-
我在运行最新稳定版 RN (0.49) 的 Android 7.0 上,显然这仍然是一个问题。这种解决方法是唯一对我有用的方法(将自动更正设置为 false 不起作用,也没有手动将输入值的状态设置为 null 或空字符串,尽管 null 与空字符串由于某种原因确实表现不同(仍然两者都不是对))
标签: react-native react-native-android