React Native - 使用状态时文本输入闪烁

2023-12-04

我正在向 TextInput 组件的输入文本添加一些验证。 TextInput 的值在状态中处理,并且仅在输入的值有效时更新。

我的代码看起来像这样:

class TextInputWithValidation extends Component {

  constructor(props) {
    super(props);
    this.state = { text: ''}
    this.handleChange = this.handleChange.bind(this);
  }

  handleChange(text) {
    if(isValid) {
        this.setState({text})
    }
  }

  render() {
    return (
            <TextInput
                value={this.state.text}
                onChangeText={this.handleChange}
            />
    )
  }
}

问题是,当向 TextInput 输入无效字符时,无效文本会出现一秒钟然后消失 - 这会导致不必要的闪烁。

有什么想法如何解决这个问题吗?


根据您的评论,解决方法可能是使用您的handleChange方法来检测小数点,然后简单地设置某种inputLengthState到小数点的当前位置

然后你可以使用 prop 进行文本输入maxLength = this.state.inputLengthState + this.state.precision,精度为小数点后的位数。我在下面写了一些基本代码

class TextInputWithValidation extends Component {

  constructor(props) {
    super(props);
    this.state = { 
       text: '',
       precision: 2,
       inputLength: 100,
    }
    this.handleChange = this.handleChange.bind(this);
  }

 handleChange(text) {
   if(isValid) {
     this.setState({text})
   }
   //somewhere here you would check text for a decimal place
   //and then set the inputLength the decimals' string index. If null,
   //set it to some limit however you would like ( i used 100 ).
 }

render() {
    return (
        <TextInput
            value={this.state.text}
            maxLength={this.state.inputLength + this.state.precision}
            onChangeText={(text) => {this.handleChange(text)}}
        />
    )
}

}

如果我的代码有点语法错误,我很抱歉,已经有一段时间了。对于检查小数位的算法,我确信这应该非常简单。如果没有,请说。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

React Native - 使用状态时文本输入闪烁 的相关文章

  • mobx 未观察到数组拼接

    我定义了一个从数组中删除项目的操作 export default class myStore observable items action deleteItem async target gt try await backendServi
  • React Native 的捆绑包是什么?它的用途是什么?

    我试图了解该捆绑包到底是什么以及它的目的是什么 我可以或不能用它做什么 我看到 当您运行命令 react native start 时 打包程序将被初始化 当您使用 react native run android 或 run ios 在设
  • 使用react-native测量音频的响度

    我正在创建一个应用程序 Android 来使用本机反应录制手机中的语音 一项要求是实时测量声音的响度并基于它制作动画 我尝试使用react native audio库 但问题是响度监控仅在IOS中支持 我检查了世博会音频库 但找不到方法 有
  • 从本机代码访问 AsyncStorage

    我需要使用 JS 代码中的 AsyncStorage 将数据保存在本地存储中 我想知道是否有一种方法可以从本机代码 Objective C 或 Java 访问 AsyncStorage 存储的数据 Thanks 如果你导入RCTAsyncL
  • 如何将变量传递给函数引用?

    在 React Native 中 当你有需要在渲染时运行并且必须传递变量的函数时 大多数人建议应该使用 onPress gt this functionName variable 然而 当处理大型列表和复杂组件时 您必须优化代码 为每个 r
  • React Native 输入组件仅接受数值

    在React Native项目中 我有一个来自Native Base的输入组件 我希望这个组件只接受数值0 9并给这个字段默认值 我寻找了关于这个问题的其他问题 我不知道也许那些答案是针对 textInput 组件的 或者不知何故建议对我不
  • 如何在 Android 中实现 React Native UI 组件方法

    我很清楚 对于react native本机模块 我们可以使用 ReactMethod导出一个方法并从 JSX 调用它 但是我们如何在 React Native 原生 UI 组件中做同样的事情呢 在文档中我只看到 ReactProp被提及 如
  • 在 React 中存储数据

    我实际上是 React 新手 无法选择在这种情况下存储数据的最佳方式是什么 我有一个包含一些输入的表单 我需要在提交时对这些输入中的所有数据执行一些操作 所有输入都存储在一个组件中 所以 我只需要在提交时获取所有数据 现在我正在尝试选择存储
  • 有没有办法限制 React-Native 中 TextInput 的长度?

    我一直在尝试使我的程序不允许您在 TextInput 组件中输入超过一定数量的字符 类似于 maxLength 对于输入的工作方式 我还没有找到任何类似的 textInput 的 maxLength 有没有一种简单的方法来设置 组件的最大字
  • 将本机图像上传反应为表单数据

    Postman formdata 工作正常 但是返回 http 500 错误 这个块出了什么问题 响应 type default status 500 ok false statusText 未定义 标头 标头 标头 标头 map 确定 f
  • 在React Native中在Android真实设备上运行应用程序时console.log输出在哪里

    我目前正在做一个项目 在那个项目中 我正在打印控制台日志但没有消息在任何地方打印 我在用npm 和 React native cli在真正的 Android 设备上运行 Thanks 如果您使用模拟器 可以按 Cmd M Android 或
  • 如何在 Firebase 上随机获取相同的数据?

    我有用户表和这段代码 getOnline 代码和连接按钮 var onlineStatus firebase database ref users firebase auth currentUser uid online onlineSta
  • 将 async 和await 与export const 一起使用

    我无法完成这项工作 它说 await 是一个保留字 是的 当然是 而且我想使用它 怎么了 export const loginWithToken async gt return dispatch gt dispatch type SESSI
  • 如何在React Native的MapView中设置标记

    我想在React Native中的MapView上设置一个标记 但是通过官方文档找不到任何信息MapView https facebook github io react native docs mapview html content 如
  • onPress 方法中箭头函数与普通函数的行为

    正在学习 Native React 并学习更多关于 javascript 的知识 所以我仍然不明白它的行为的很多事情 我使用 TouchableOpacity 及其 onPress 属性创建了一个按钮组件 为了让它工作 我必须发送我想要执行
  • 公式无效:/usr/local/Homebrew/Library/Taps/facebook/homebrew-fb/buck.rb

    我运行了brew 命令来安装Facebook homebrew tap 我有一个 M1 Apple Silicon 芯片组 并使用 Rosetta 下的终端来执行 brew 命令 brew tap facebook fb 我收到错误消息 g
  • 键盘打开 React Native 时出现双击按钮问题

    我知道已经有很多关于这个主题的疑问 我已经尝试了每一步 但仍然无法解决问题 这是代码 render const sContainer sSearchBar styles if this props InviteState objectFor
  • 使用 firebase java.lang.NoClassDefFoundError 反应本机:无法解析:Lcom/google/android/gms/common/internal/zzbq

    我正在按照教程进行操作here https rnfirebase io docs v4 2 x auth android 并检查了堆栈溢出上的类似问题Android 3 1 1 解析失败 Lcom google android gms co
  • 在 React Native (iOS) 中支持动态类型

    有谁知道如何在 React Native 中实现对动态类型的支持 理想情况下 我们希望监听何时有人更改了系统字体的大小 并执行某种类型的回调 或者更好的是 阻止在某些组件上实现字体缩放 好吧 事实证明你可以申请 allowFontScali
  • React Native TextInput 在 Android 上打开时自动关闭

    我切换了笔记本电脑并克隆了我的项目的存储库 进行了快速的纱线安装 看起来它与主分支上的有很大的不同 但我没有打扰 因为也许这只是因为不同的节点版本 现在 每次我单击一个 TextInput 时 键盘都会立即打开和关闭 仅在 Android

随机推荐

  • 为什么setup.py在安装之前会扫描命名空间的内容?

    我使用带有 setuptools 的命名空间在两个不同的存储库中分发相同的模块 目标是得到mymodule one and mymodule two安装后 知道内容one and two来自不同的仓库 但看起来像两个setup py互相扫内
  • 将 System.Double 表示为可排序字符串的最佳方式是什么?

    在所有基础类型都是字符串的数据格式中 数字类型必须转换为可以按字母顺序比较的标准化字符串格式 例如 一个short对于价值27可以表示为00027如果没有负面影响 代表一个的最好方式是什么double作为字符串 就我而言 我可以忽略负数 但
  • 背景附件:固定;不使用背景位置

    我做了一个codepen解释我的问题 当用户滚动时 蓝色图像应跟随用户滚动 蓝色图像应粘贴在旁边部分的另一侧 右侧为左侧 左侧为右侧 pb 是这样的 background attachment fixed 这个CSS规则不起作用 backg
  • EnableAutoRejoiningGroups 在 SignalR 1.0 中消失

    看起来 GlobalHost HubPipeline EnableAutoRejoiningGroups 已在 SignalR 1 0 最终版本中消失 然而 发行说明中没有提及它的去向 也没有任何线索如何恢复此功能 有人知道发生了什么事吗
  • 了解 C 中的静态变量声明/初始化

    我的项目中只有一个名为 test c 的文件 如果我不定义 TRUE 下面的代码将无法编译 我用的是vc 我只是想了解这种行为 请阐明这方面的情况 ifdef TRUE static int a static int a 1 else st
  • 如何使用正则表达式 String.match() 区分 ${SOME_TEXT}

    我需要这个字符串 var x Hi name How are you name you are old name share with other how do u feel 我需要使用正则表达式知道有多少不同的 ANY THING 存在
  • 为什么非侵入式序列化要添加 5 字节零前缀?

    我正在研究使用 boost archive 的应用程序中从非标准字符串到标准字符串的端口 非标准字符串的 反 序列化以非侵入式方式定义 如下例所示 序列化和反序列化按预期工作 但是当移植的应用程序收到旧消息时 它会因分配错误而崩溃 这是由于
  • opencv 的 Python/Kivy 相机小部件错误

    我一直在尝试制作一个打开设备相机的应用程序 但出现此错误 CRITICAL Camera Unable to find any valuable Camera provider at all videocapture ImportError
  • 导入错误:无法导入名称“_imagingtk”

    我正在使用 Anaconda 和 python 3 4 但我无法在 Windows 8 1 上获得我需要的所有枕头包 我通过 Anaconda 控制台安装了枕头 pip install pillow 这导致 The following pa
  • 无法在 Anaconda 中安装聊天机器人

    安装时chatterbot在 Anaconda 中使用 Python 3 7 我收到以下错误 找到现有安装 PyYAML 3 13 无法卸载 PyYAML 它 是一个 distutils 安装项目 因此我们无法准确地 确定哪些文件属于它 这
  • 如何在 PL/pgSQL 中按行类型返回表

    我正在尝试使用 PL pgSQL PostgreSQL 9 3 实现一个函数 该函数返回与参数中的输入表具有相同结构的表 基本上 我想更新一个表 并使用 plpgsql 返回更新后的表的副本 我搜索了一下 发现了几个相关的问题 例如从 PL
  • 继承 Angular 5 组件并覆盖装饰器属性

    在 Angular 2 4 中 我们可以创建自定义装饰器来扩展父组件 装饰器属性的实际重写是根据需要在自定义装饰器中处理的 为了获取父注释 我们使用了 let parentAnnotations Reflect getMetadata an
  • CMake:我如何依赖自定义目标的输出?

    我无法修改的传统 Make 流程会生成一个我必须对其进行一些后处理的目标 I use add custom target强制 Makefile 始终运行 我用add custom command对于我的后处理步骤 问题是add custom
  • 以编程方式从 IOS 中的配置文件检索数据

    我一直在搜索所有 Apple 文档 包括这些论坛 但无法从我在 iPhone 上创建并安装的配置文件中检索证书 进一步来说 使用 iPhone 配置实用程序 我创建了一个简单的配置文件 其中在 凭据 选项卡下包含一个证书 我现在尝试使用我的
  • 如何将 XML 块从一个文档复制到另一个文档?

    我有两个 dataGridView 每个都加载一个 XML 文件 这样您就可以在每个网格之间拖放行 然而目前 它所做的只是从 dataGridView 复制数据 这工作正常 但我需要复制与该行相关的所有 XML 这是我必须使用的 XML
  • WPF:使用线程访问 UI 对象会出现错误

    我有一个在文件夹中修改文件时调用的函数 此函数更新存储在 UI 中的列表视图的项目 这是函数 Private Sub FileChangeNotify Try LstMoulures Items Refresh Catch ex As Ex
  • 传递 ArrayList 到 Activity

    我搜索了一些主题 但没有找到解决我的问题的方法 public class Series implements Parcelable private String name private int numOfSeason private in
  • 图表工具在 Visual Studio 中呈灰色显示

    我正在尝试将图表添加到 Visual Studio 表单 但该按钮呈灰色 我正在使用 NET Framework 3 5 和 C 按照在线说明 我已从此链接下载并安装了 dll 文件 http www microsoft com en us
  • 如何在表单提交后使用 Ajax POST

    我认为这很简单 但我无法在任何地方找到如何做到这一点 正如标题所示 在成功提交表单帖子后如何执行 ajax 帖子 我试图搜索它 但我看到的只是与我需要的相反 这是在 ajax 帖子之后提交的 我会尝试制作一个与我正在做的非常相似的程序草案
  • React Native - 使用状态时文本输入闪烁

    我正在向 TextInput 组件的输入文本添加一些验证 TextInput 的值在状态中处理 并且仅在输入的值有效时更新 我的代码看起来像这样 class TextInputWithValidation extends Component