如何重置 React 输入的默认值

2023-11-26

我有一组设置了 defaultValue 的 React 输入元素。这些值通过 onBlur 事件更新。

我还在页面上执行了另一个操作,用于更新这些输入元素中的所有值。发生这种情况时,有没有办法强制做出反应以呈现新的默认值?

我无法轻松使用 onChange,因为它会触发过早重新渲染(输入包含显示顺序值,过早重新渲染会移动它们)。

我可以创建一个重复状态,一个用于仅使用 onBlur 更新的实际值,另一个用于在编辑输入元素时更新该值。这远非理想。只需重置默认值就会简单得多。


正如中提到的https://stackoverflow.com/a/21750576/275501,您可以将一个键分配给渲染组件的外部元素,由状态控制。这意味着你有一个“开关”来完全重置组件,因为 React 认为一个新的键来指示一个全新的元素。

e.g.

class MyComponent extends React.Component {
  
  constructor() {
  
    super();
    this.state = { 
    
      key: Date.now(),
      counter: 0
      
    };
    
  }
  
  updateCounter() {
  
    this.setState( { counter: this.state.counter + 1 } );
    
  }
  
  updateCounterAndReset() {
  
    this.updateCounter();
    this.setState( { key: Date.now() } );
    
  }
  
  render() { return ( 
  
    <div key={this.state.key}>
  
      <p>
      
        Input with default value:
        <input type="text" defaultValue={Date.now()} />
     
      </p>

      <p>
        Counter: {this.state.counter}
        <button onClick={this.updateCounter.bind( this )}>Update counter</button>
        <button onClick={this.updateCounterAndReset.bind( this )}>Update counter AND reset component</button>
        
      </p>
      
    </div>
  
  ); }
  
}

ReactDOM.render( <MyComponent />, document.querySelector( "#container" ) );
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<div id="container" />
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何重置 React 输入的默认值 的相关文章

随机推荐

  • Dropzone 图片上传选项不起作用:(

    我正在尝试构建拖放图像上传 但拖放区选项不起作用 我不知道我是否以正确的方式进行操作 我很想设置以下选项 只上传一个文件 multiupload参数 可以删除该文件 addremovelink 最大文件大小为 2mb maxfilesize
  • 如何将 Console.WriteLine 输出保存到文本文件

    我有一个程序可以将各种结果输出到命令行控制台上 如何使用 a 将输出保存到文本文件StreamReader或其他技术 System Collections Generic IEnumerable
  • 运行CMD命令不显示?

    我已经创建了一个进程来在 CMD 中运行命令 var process Process Start CMD exe c apktool d app apk process WaitForExit 如何运行此命令而不显示实际的 CMD 窗口 您
  • 为什么将列表转换为集合比仅使用列表计算列表差异更快?

    比如说 我想计算两个列表的差异C A B A 1 2 3 4 5 6 7 8 9 B 1 3 5 8 9 C 2 4 6 7 Result A and B都用唯一的整数排序 不确定是否有办法告诉Python列表的这个属性 我需要保留元素的顺
  • 提交带有包含“???”的字符串的 jQuery.ajax 数据它将值更改为“jQuery19107363727174233645_1373301489648?”

    页面端 JavaScript var model NumberOfCPUs 2 NumberOfCores 4 OSType Linux OSVersion var id 0 var success false send to server
  • Jackson:生成带有引用的模式

    当使用 Jackson 的 JSON 模式模块时 我不想在遇到模型类时停止序列化完整的图表 而是使用类名插入另一个模式的 ref 您能引导我到 jackson module jsonSchema 源代码中的正确位置来开始修补吗 下面是一些代
  • 在 MVC4 中,如何将属于域模型一部分的文件(图像)上传到 SQL Server?

    我对 MVC 比较陌生 而且从来没有处理过将文件 特别是图像 上传到 SQL Server 数据库的问题 老实说 我不知道自己在这里做什么 这是我到目前为止所拥有的 这是我的域模型 注意HttpPostedFileBase在我的模型中 这就
  • 如何只过滤项目某个子路径下的资源文件夹?

    我找到了问题和答案Eclipse 在 打开资源 对话框中隐藏 svn 文件但不想过滤给定名称 工作 的所有资源 这太笼统了 我只想排除一个特定子文件夹 sub 中的工作文件夹 我看到 文件和文件夹属性 选项 项目相对路径 和 位置 但它们都
  • MySQL 中的自然排序

    有没有一种优雅的方法可以在 MySQL 数据库中实现高性能 自然的排序 例如 如果我有这个数据集 最终幻想 最终幻想4 最终幻想10 最终幻想12 最终幻想 12 普罗马西亚之链 最终幻想冒险 最终幻想起源 最终幻想战略版 任何其他eleg
  • 是否有相当于 iOS 推送通知反馈服务的 Android GCM?

    我们的网络应用程序向 iOS 和 Android 设备发送推送通知请求 对于 iOS Apple 推送通知服务具有反馈服务 因此您可以检测哪些设备已卸载您的应用程序 然后将其从数据库中删除 Android GCM 有类似的反馈服务吗 如果没
  • VB.NET 是否具有与 C# 等效的多行字符串声明语法? [复制]

    这个问题在这里已经有答案了 可能的重复 VB NET 中的多行字符串 在 C 中 你可以像这样 string s hello there mister VB NET 是否有类似的不涉及字符串连接的功能 我希望能够在两个双引号之间粘贴多行文本
  • Python 中最简单的异步/等待示例

    我读过很多例子 博客文章 问题 答案asyncio async await在 Python 3 5 中 很多都很复杂 我发现的最简单的可能是this one 仍然使用ensure future 为了学习 Python 中的异步编程 我希望看
  • 日期验证 --> 结束日期必须大于开始日期

    我需要编写一个脚本来验证结束日期大于开始日期 此外 开始日期 结束日期不能早于当前日期 这需要在 Django 1 8 中编写 您可以覆盖Model clean 方法 Django doc 为了这 如果您使用ModelForm Django
  • 拖动表单结束时未发送 WM_NCLBUTTONUP 消息,怎么办?

    EDIT tl dr 转到第一条评论 这个问题源于我的另一个问题当鼠标在窗体边框上按下时获取 MouseDown 事件 在这个问题中 当用户在表单边框上按下鼠标左键 准备拖动 时 我需要让表单触发一个事件 这非常有效 问题是当用户完成此操作
  • Hibernate 将对象保存到多个会话

    我正在尝试使用休眠写入多个数据库 我已将写入和读 写会话封装在单个会话对象中 但是 当我去保存时 我收到很多错误 这些对象已经与另一个会话关联 非法尝试将集合与两个打开的会话关联 这是我的代码 public class MultiSessi
  • opencv 3 beta / python中的findContours和drawContours错误

    我尝试运行一个示例here import numpy as np import cv2 img cv2 imread final jpg imgray cv2 cvtColor img cv2 COLOR BGR2GRAY ret thre
  • nodejs jade 条件扩展

    我想让我的 Jade 页面根据条件扩展不同的布局 所以我的代码如下所示 if myConditionVariable extends layout1 else extends layout2 block content p here goe
  • 在网页上显示度数符号

    我有一个程序 可以从元数据中提取 GPS 坐标并将结果导入数据库 然后我使用 PHP 在网页上显示数据 我的问题 我最近创建了一个新模板 但无论出于何种原因 它不再显示度数符号 而是显示 我只是觉得奇怪 它适用于一个模板 但不适用于另一个模
  • Pytube 错误:get_throttle_function_name:找不到多个匹配

    我正在尝试从网址 https www youtube com watch v uyVYfSNb Pc list PLBxwSeQlMDNiNt72UmSvKBLsxPgGY Jy 下载 YouTube 播放列表 但收到错误 get thro
  • 如何重置 React 输入的默认值

    我有一组设置了 defaultValue 的 React 输入元素 这些值通过 onBlur 事件更新 我还在页面上执行了另一个操作 用于更新这些输入元素中的所有值 发生这种情况时 有没有办法强制做出反应以呈现新的默认值 我无法轻松使用 o