”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 反应受控/不受控组件

反应受控/不受控组件

发布于2024-11-09
浏览:813

React Controlled/Uncontrolled Components

在 React 中,处理表单输入主要有两种方法:

  • 受控组件
  • 不受控制的组件

受控组件提供更多控制和验证,而不受控组件更简单,对于间歇性值访问的基本形式有用。

受控组件

这些是表单输入,其值由 React State 控制。每当输入的值发生变化时,状态变量就会更新,并且输入的值是通过 value 属性显式设置的。

onChange 事件处理程序用于更新状态。

import React, { useState } from "react";
function ControlledComponent() {
     const [name, setName] = useState("")

     const handleChange = (e) => {
          setName(e.target.value);
     }

     return(
          
     );
}

在上面的示例中,name状态变量控制输入字段的值。每当输入值发生变化时,handleChange函数就会更新名称状态,并且输入值通过 value 属性设置为名称状态变量的当前值。

不受控制的组件

不受控制的组件是在内部管理其状态的表单输入,而不是由 React State 控制。您可以在提交表单后或在需要时使用 ref 访问输入的当前值。

import React, { useRef } from "react";
function UncontrolledComponent() {
     const inputRef = useRef(null);

     const handleSubmit = (e) => {
          e.preventDefault();
          console.log(inputRef.current.value);
     };

     return(
          
); }

在上面的示例中,inputRef 用于为 input 字段创建 refhandleSubmit 函数使用 inputRef.current.value 访问输入的当前值。可以实现表单提交逻辑以根据需要利用输入值。

版本声明 本文转载于:https://dev.to/mursalfk/react-controlleduncontrolled-components-55nk?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • 如何使 JavaScript 正则表达式匹配不区分大小写?
    如何使 JavaScript 正则表达式匹配不区分大小写?
    在 JavaScript 中执行不区分大小写的正则表达式匹配使用 URL 时,通常需要从查询字符串中提取数据。在 JavaScript 中,使用正则表达式执行此提取可能很简单,但确保不区分大小写可能具有挑战性。在这篇文章中,我们探讨了一个常见问题,即区分大小写的比较可能会导致不一致的结果。让我们考虑...
    编程 发布于2024-11-09
  • 在 PHP 中将 Data-URI 转换为文件时如何解决图像损坏问题?
    在 PHP 中将 Data-URI 转换为文件时如何解决图像损坏问题?
    PHP Data-URI 到文件:解决损坏的图像问题在从 Data-URI 转换为文件格式期间保持图像数据的完整性至关重要。使用 PHP 的 file_put_contents 函数保存来自 JavaScript canvas.toDataURL() 调用的数据时遇到的一个常见挑战是生成的图像损坏。...
    编程 发布于2024-11-09
  • 数据库中哪种分层数据结构最好:邻接表还是替代方案?
    数据库中哪种分层数据结构最好:邻接表还是替代方案?
    数据库中的分层数据结构:邻接表与其他方法在关系数据库中实现分层数据时,开发人员通常会考虑两种方法:邻接表和嵌套树。虽然邻接列表看起来更简单,但由于可能存在大量查询,因此对其遍历操作的性能产生了担忧。邻接列表和嵌套树的替代品除了这两个选项,存在表示数据库中分层数据的其他方法,包括:嵌套集合路径枚举闭包...
    编程 发布于2024-11-09
  • Cucumber.js:行为驱动测试的完整指南
    Cucumber.js:行为驱动测试的完整指南
    Cucumber.js 是一种流行的工具,用于运行以简单语言编写的自动化测试,允许开发人员和非开发人员协作进行测试。它在行为驱动开发 (BDD) 中特别有用,因为利益相关者之间的清晰沟通是关键。通过使用人类可读的语言,Cucumber js 使产品所有者、测试人员和开发人员能够确保软件按预期运行,...
    编程 发布于2024-11-09
  • 天国冒险:穿越空间和代码的旅程
    天国冒险:穿越空间和代码的旅程
    灵感 我一直对宇宙的浩瀚和神秘着迷。行星的错综复杂的运动、天体的壮丽——这些元素一直激发着我的好奇心。当我遇到这个挑战时,我认为这是一个将我对太空的热情与创造力和技术结合起来的机会。我想建造一些能够捕捉宇宙敬畏的东西,并让每个人都能接触到它,无论他们身在何处或使用什么设备。这个项目成为我将灵感转化为...
    编程 发布于2024-11-09
  • 如何获取 Openpyxl 中单元格的原始值,即使它包含公式?
    如何获取 Openpyxl 中单元格的原始值,即使它包含公式?
    如何在 Openpyxl 中检索实际单元格值使用 openpyxl 访问 Excel 中的单元格值时,您可能会遇到显示的值与存储在 Openpyxl 中的实际值之间的差异单元格(如果单元格包含公式)。这是因为 openpyxl 通常解释公式并检索计算结果。要检索实际单元格值(包括公式),可以在加载工...
    编程 发布于2024-11-09
  • React 的基本核心概念
    React 的基本核心概念
    在快速发展的 Web 开发世界中,React 仍然是构建动态和高性能用户界面的基石。无论您是经验丰富的开发人员还是刚刚起步的开发人员,了解 React 的核心概念对于充分发挥其潜力至关重要。在本文中,我们将探讨 React 的基本原理,从它的库状态到 hooks 的强大功能,并为您提供增强 Reac...
    编程 发布于2024-11-09
  • 如何防止 Chrome 的自动填充更改您的字体?
    如何防止 Chrome 的自动填充更改您的字体?
    克服 Chrome 的自动填充字体更改挑战在 Windows 上遇到 Chrome 的自动填充功能时,您可能会遇到烦人的字体更改问题。将鼠标悬停在已保存的用户名上时,字体大小和样式会发生变化,从而破坏表单的对齐方式。虽然您可以对输入应用固定宽度来缓解此问题,但更有效的解决方案在于完全防止字体更改。要...
    编程 发布于2024-11-09
  • Em 和 Rem:有什么区别?
    Em 和 Rem:有什么区别?
    简介:rem和em都是CSS中的大小单位。 Rem 是 root 元素的字体大小。 Em 是本地上下文的字体大小。 em 单位 是从印刷版式世界借来的,它是一个允许设置元素的字体大小相对于其组件层次结构中最接近的声明字体大小的单位。 rem 单元 是 root em 的缩写,始终引用根元素(即 元...
    编程 发布于2024-11-09
  • 在 Go 中使用 WebSocket 进行实时通信
    在 Go 中使用 WebSocket 进行实时通信
    构建需要实时更新的应用程序(例如聊天应用程序、实时通知或协作工具)需要一种比传统 HTTP 更快、更具交互性的通信方法。这就是 WebSockets 发挥作用的地方!今天,我们将探讨如何在 Go 中使用 WebSocket,以便您可以向应用程序添加实时功能。 在这篇文章中,我们将介绍: WebSoc...
    编程 发布于2024-11-09
  • 修复 D3.js GeoJSON 绘图问题:如何纠正缠绕顺序?
    修复 D3.js GeoJSON 绘图问题:如何纠正缠绕顺序?
    D3.js 错误绘制 GeoJSON:缠绕顺序问题当尝试使用 geoJSON 数据可视化俄罗斯地区时,程序员遇到了一个问题其中 D3.js 绘制单个黑色矩形而不是所需的地图轮廓。这种差异是由于 geoJSON 文件中坐标的缠绕顺序问题引起的。了解缠绕顺序GeoJSON 坐标可以按顺时针或逆时针顺序排...
    编程 发布于2024-11-09
  • 多重继承的问题
    多重继承的问题
    Java不支持类的多重继承,标准方法不规避此限制,因为类可以维护状态(使用实例变量),但接口不能。 默认方法提供了行为多重继承的有限形式,允许一个类通过默认方法从多个接口继承行为。 当一个类实现的两个接口具有相同的默认方法时,可能会发生冲突,例如两个接口 Alpha 和 Beta 都使用了 res...
    编程 发布于2024-11-09
  • 如何避免 getImageData() 中的“画布已被跨域数据污染”错误?
    如何避免 getImageData() 中的“画布已被跨域数据污染”错误?
    如何避免 getImageData() 中出现“画布已被跨源数据污染”错误使用 getImageData( 时) 方法从画布检索像素数据,您可能会遇到错误“画布已被跨源数据污染”。当您尝试访问受从其他域加载的数据影响的画布上的像素数据时,会出现此错误。要了解此错误的原因,请考虑大多数浏览器中实现的安...
    编程 发布于2024-11-09
  • ## Promise.all:Node.js 中是并行执行还是顺序执行?
    ## Promise.all:Node.js 中是并行执行还是顺序执行?
    Promise.all:Node.js 中并行执行还是顺序执行?问题: Promise.all(iterable) 是否顺序处理 Promise 或并行?答案: Promise.all 不执行 Promise;相反,它只是同时等待多个承诺。 Promise 的计算和结果由调用 Promise.all...
    编程 发布于2024-11-09
  • 如何克服 Splinter/Selenium 中的 ElementClickInterceptedException:被其他拦截时单击元素的指南
    如何克服 Splinter/Selenium 中的 ElementClickInterceptedException:被其他拦截时单击元素的指南
    被其他人拦截时单击元素:在 Splinter/Selenium 中处理 ElementClickInterceptedException抓取网页时,单击某些元素可能会具有挑战性,因为模糊元素的存在。在 Selenium 中,当尝试单击被另一个元素遮挡的元素时,会引发 ElementClickInte...
    编程 发布于2024-11-09

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3