我想创建一个输入字段,以小写形式返回输入的文本.我在用expo

const [login, setLogin] = useState('');
//...
<TextInput style={{backgroundColor:'#bbb'}}
   value={login}
   onChangeText={(val)=>setLogin(val.toLowerCase())}
   placeholder="email or username"
></TextInput>

在我的设备上测试时,我得到了一个奇怪的结果.

我的输入:"K"=&gt;login='k'

我的输入:"k"=&gt;登录名='kkk'

我的输入:"k"=&gt;登录名='kkkkk'

你可能需要try 几次来重现我的结果,因为它不是每次都发生.当我删除.toLowerCase(),它的工作正常.

我给你做了runnable example个测试.在web模式下运行它可以正常工作,但当我在设备上运行它时,会出现与我的项目中相同的错误.

下面是我在安卓10上运行它时发生的video件事.你可以看到,它并不总是发生,但有时它会像我只按了两次"q"时,就按了三次

推荐答案

我想你遇到了一个已知的react-native错误,与Android平台上的文本输入和大写有关.打开github第#27449期.

作为一种解决方法,您可以强制文本输入使用Android上的visible-password键盘类型.

Working example美元供您测试:

import React, { useState } from 'react';
import { Text, View, StyleSheet, TextInput } from 'react-native';
import { Platform } from 'react-native';

export default function App() {
  const [login, setLogin] = useState('');
  return (
    <View style={styles.container}>
      <TextInput style={{backgroundColor:'#bbb'}}
        value={login}
        onChangeText={(val)=>setLogin(val.toLowerCase())}
        keyboardType={Platform.OS === 'ios' ? 'default' : 'visible-password'}
        placeholder="email or username"
      ></TextInput>
    </View>
  );
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: 'center',
    padding: 80,
  },
});

解决方案的积分为simon-davies-avtura

Javascript相关问答推荐

调用SEARCH函数后,程序不会结束

用相器进行向内碰撞检测

Vue:ref不会创建react 性属性

类型自定义lazy Promise. all

MongoDB中的引用

在grafana情节,避免冲突的情节和传说

WebGL 2.0无符号整数输入变量

如何在模块层面提供服务?

检索相加到点的子项

OpenAI转录API错误请求

如何使用基于promise (非事件emits 器)的方法来传输数据?

Phaserjs-创建带有层纹理的精灵层以自定义外观

对具有相似属性的对象数组进行分组,并使用串连的值获得结果

将嵌套数组的元素乘以其深度,输出一个和

处理TypeScrip Vue组件未初始化的react 对象

在SuperBase JS客户端中寻址JSON数据

React Refs不与高阶组件(HOC)中的动态生成组件一起工作

如何在FiRestore中的事务中使用getCountFromServer

如何在Java脚本中并行运行for或任意循环的每次迭代

如何处理不带参数的redux thunk payloadCreator回调函数?