首页 > 解决方案 > 如果创建了大写字母,则 TextInput 值上的 toLowerCase 正在创建重复的文本

问题描述

这是一个有趣的。

我创建了一个 TextInput,它接受一个值,然后将其小写,将其添加到 state,并将其设置为默认值。在我的安卓物理设备上,如果你强制使用大写字母(自动大写设置为无),然后快速点击其他字母,它会复制并添加额外的文本。

有没有办法避免这种情况?

这是小吃https://snack.expo.io/Hk1reKHJ4

在你的android或模拟器上运行它,点击键盘上的大写按钮,点击几个其他字母,再次点击大写,点击几个其他字母,你应该设置这个错误。

谢谢!

export default class App extends React.Component {
  constructor(props) {
    super(props)
    this.state = {
      text: ''
    }
  }
  render() {
    return (
      <View style={styles.container}>
        <TextInput
          style={ styles.inputContainer }
          defaultValue={ this.state.text }
          autoCapitalize="none"
          onChangeText={ value => this.setState({ 
            text: value.trim().toLowerCase()
            })}
        />
      </View>
    );
  }
}

标签: androidreactjsreact-native

解决方案


不幸的是,这个问题已经开放了几年没有解决方案,你可以检查这个线程,没有人找到解决方案。在 React Native 团队修复此错误之前有一个临时解决方法,因为它似乎花费了太长时间,请在此处查看


推荐阅读