如何重置 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 输入的默认值 的相关文章

  • 按 T​​ab 键可关闭从子菜单打开的 Material UI 对话框

    我需要创建一个菜单栏 其中包含许多带有子菜单的菜单 当我从顶级菜单项打开对话框时 一切都会按预期 预期进行 但是当我从子菜单打开对话框时 按 Tab 键会关闭该对话框 我尝试了几种不同的方法来实现嵌套菜单 并选择了此处讨论的方法 https
  • 是否可以覆盖material-ui组件的默认道具?

    可以说我想要每一个Button组件来自material ui有默认的 propsvariant contained color secondary 这可能吗 这方面的文档在这里 https material ui com customiza
  • 使用输入更新 redux 状态

    如何从文本输入更新 redux 状态 我正在尝试用文本输入做一个非常简单的 Hello World 当有人在文本输入中输入内容时 它应该更新我商店的 searchTerm 值 我无法弄清楚这些事情 1 如何获取输入的值并将其传递到其 onC
  • 样式组件如何影响性能?

    使用样式组件是否比样式表更会降低 Web 应用程序的速度 如果我关心性能并且没有任何依赖于 props 的样式 我是否应该放弃样式组件并使用样式表 当您有很多小组件时 同时使用样式化组件渲染 性能开销可能会很有意义 绝对值得测试以删除小元素
  • react-hook-form:检查未保存的更改

    我有一个由以下人员控制的预填写表格react hook form https react hook form com const control handleSubmit formState setValue reset useForm
  • 如何在每个测试中更改笑话模拟函数的返回值?

    我的组件测试文件中有一个像这样的模拟模块 jest mock magic index gt navigationEnabled gt true guidanceEnabled gt true 这些函数将在我的组件的渲染函数中调用 以隐藏和显
  • 反应模式 shouldCloseOnOverlayClick 不起作用

    我正在使用反应模式 点击叠加层后模式不会关闭 我为 isOpen 和 onRequestClose 提供了属性 但模式保持打开状态 closeModal gt this setState modalIsOpen false
  • addEventListener 通过映射调度来反应 redux

    我目前正在尝试将事件侦听器添加到我在反应中制作的应用程序 我通过连接到运行的 componentDidMount API 来做到这一点只有一次该组件已渲染 仅此而已 我的问题是我正在使用connect from react redux将我的
  • Material UI - 更改主题中的按钮文本颜色

    我在直接在 Material UI 主题中更改按钮文本颜色时遇到问题 更改主色 按钮字体大小效果很好 因此问题不在于传递主题 这是我的代码 import React from react import MuiThemeProvider cr
  • 想要动态处理与分页相关的页码显示:ReactJS

    我有一些分页逻辑工作得很好 唯一的问题是我只能让它显示并固定数量的页面可供选择 现在我已经把它放到了 5 页 但我希望它能够根据总记录动态更改 假设我有 100 条记录 每页限制为 10 条 将有 10 页 现在我只能让它以这种方式显示 第
  • React Router v4 不渲染组件

    React Router v4 渲染组件存在问题 在应用程序初始加载时 它将呈现与 URL 相对应的正确组件 但是 任何后续的组件Link单击不会呈现所需的组件 图书馆 反应路由器 4 2 2 https reacttraining com
  • 使用 next.js 进行服务器端渲染与传统 SSR

    我非常习惯 SSR 意味着页面得到完全刷新并从服务器接收完整 HTML 的方法 其中根据后端堆栈使用 razor pub other 进行渲染 因此 每次用户单击导航链接时 它只会向服务器发送请求 整个页面将刷新 接收新的 HTML 这就是
  • 是否可以在 React Native 中隐藏“BugReporting extraData”? (使用世博会)

    每次我使用 Expo 打开 React Native 应用程序时 我都会在控制台中收到大量消息 其中包含有关该应用程序的元数据 这实际上对我的调试没有多大帮助 特别是因为它每次都是相同的信息 并且每次应用程序重新加载时都会显示 即使是热重新
  • 使用 React Hook 将更新器传递给以“(state, props)”作为更新状态参数的“setState”相当于什么?

    替代使用的最佳实践是什么setStateReact Component 中的函数 https reactjs org docs react component html setstate https reactjs org docs rea
  • 如何在reactjs中访问悬停状态?

    我有一个侧面导航 里面有很多篮球队 因此 当其中一个团队悬停在上方时 我想为每个团队显示不同的内容 另外 我正在使用 Reactjs 所以如果我可以有一个可以传递给另一个组件的变量 那就太棒了 React 组件在其顶级界面中公开所有标准 J
  • Next.js 中的 .env.local 文件未正确设置

    当我创建一个 env local文件在我的项目根目录中 它设置不正确 在文件中 我有我的 API 密钥 如下所示 API KEY SOME API KEY 然后当我尝试访问它时获取服务器端属性 with 进程 env API KEY 它不起
  • 由于 apollo-client 未定义,无法解构 GraphQL 查询?

    我正在寻找调试与错误消息相关的问题 未捕获的类型错误 无法解构 0 apollo client WEBPACK IMPORTED MODULE 4 useQuery 因为它未定义 Context 我正在为我的 React js 项目设置后端
  • React-Redux:state.setIn() 和 state.set() 有什么区别?

    我见过使用setIn and set 在一些react redux代码中 state setIn state set 我在这里找到了一些文档https facebook github io immutable js https facebo
  • 在 ReactJS 中创建动态目录

    我有一个组件 它代表一个页面 其中有多个SectionHeader 组件作为该页面的子组件 我想通过检查 Page 的子项 SectionHeaders 来动态创建目录
  • Cypress 在 Create React App 中返回 .scss 文件的 webpack 编译错误

    我正在尝试将 Cypress 添加到非常基本的 CRA 但遇到了 Cypress 无法理解 scss 文件的问题 当我跑步时npm run cypress运行测试 我收到以下错误 Error Webpack Compilation Erro

随机推荐

  • 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