React Native:TextInput toUpperCase 在 onChangeText 中的 Android 上不起作用

Posted

技术标签:

【中文标题】React Native:TextInput toUpperCase 在 onChangeText 中的 Android 上不起作用【英文标题】:React Native: TextInput toUpperCase does not work on Android in onChangeText 【发布时间】:2020-04-10 07:28:49 【问题描述】:

我有一个 TextInput 组件,它应该在输入时将输入转换为大写字母。我的代码如下:

import React, Component from 'react';
import  View, StyleSheet, Text, TextInput, Button  from 'react-native';

export default class ProfileTest extends React.Component 

 constructor(props) 
    super(props);
    this.state = text : '';
  

  render() 
    return ( 
     <View>
          <TextInput
            style=fontSize : 60
            onChangeText=text => 
              text = text
                .toUpperCase();
              this.setState( text: text );
            
            value=this.state.text
            placeholder="enter text"
          />

        </View>
    )
  

在世博会上,这确实有效。但是,当我在我的 android 设备上尝试此操作时,我得到以下行为:

前两个字母工作正常,但每当我添加第三个字母时,它会突然重复前两个字母,这样 ABC -> ABABC 我不知道为什么会这样,我似乎无法摆脱它。我已将 '.toUpperCase()' 确定为罪魁祸首。

感谢您的帮助!

【问题讨论】:

【参考方案1】:

您可以在此处找到更多信息: https://github.com/facebook/react-native/issues/23578

1 人对其进行了修复,但仍未投入生产: https://github.com/facebook/react-native/pull/29070

我试图找到一些解决方法,例如改变状态、引用但没有任何效果:/

【讨论】:

【参考方案2】:
import React,  useState  from 'react';
import  TextInput, Platform  from 'react-native';

const UselessTextInput = () => 
  const [info, setInfo] = useState('');

  return (
    <TextInput
      style= height: 40, borderColor: 'gray', borderWidth: 1 
      onChangeText=text => 
       setInfo(text.toLowerCase()) 
      
      secureTextEntry=Platform.OS === 'ios' ? false : true
      keyboardType=Platform.OS === 'ios' ? null : 'visible-password'
      value=info
    />
  );


export default UselessTextInput;

【讨论】:

请在此处粘贴您的代码,图像质量很差

以上是关于React Native:TextInput toUpperCase 在 onChangeText 中的 Android 上不起作用的主要内容,如果未能解决你的问题,请参考以下文章

删除行时如何使多行TextInput缩小(React-Native)?

如何使用 react-native 的 TextInput 的 `selectionState` 属性?

React Native 之 TextInput(多个语法知识)

fontFamily 'Arial' 不是使用 react-native-textinput-effects 的系统字体

TextInput 在 react-native 中隐藏在键盘后面

React Native - @emotion/native - TextInput 占位符文本颜色属性