首页 > web前端 > 前端问答 > 您如何在React中创建不受控制的组件?

您如何在React中创建不受控制的组件?

James Robert Taylor
发布: 2025-03-19 16:15:32
原创
694 人浏览过

您如何在React中创建不受控制的组件?

React中不受控制的组件是由DOM本身处理形式数据的那些,而不是由组件的状态管理。要创建一个不受控制的组件,您可以执行以下步骤:

  1. 使用defaultValue Prop :而不是使用value来设置表单元素的初始值(这将使它受到控制),而是使用defaultValue 。例如,对于输入字段,您将要这样做:

     <code class="jsx"><input type="text" defaultvalue="Initial Value"></code>
    登录后复制
  2. 避免在更改上设置状态:在受控组件中,您将在每个更改事件上更新状态。对于不受控制的组件,您不执行此操作。您让DOM内部处理更改。
  3. 通过参考访问数据:由于数据未由React的状态管理,因此您需要在需要时访问当前值的方法。您使用React的ref系统来创建对DOM节点的引用。这是您的工作方式:

     <code class="jsx">class UncontrolledForm extends React.Component { constructor(props) { super(props); this.inputRef = React.createRef(); } handleSubmit = (event) => { event.preventDefault(); console.log('Input Value:', this.inputRef.current.value); } render() { return ( <form onsubmit="{this.handleSubmit}"> <input type="text" defaultvalue="Initial Value" ref="{this.inputRef}"> <button type="submit">Submit</button> </form> ); } }</code>
    登录后复制

通过遵循以下步骤,您可以在React中创建一个不受控制的组件,其中表单数据由DOM直接处理。

在反应应用中使用不受控制的组件有什么好处?

在React应用程序中使用不受控制的组件带有几个好处:

  1. 更容易实现:不受控制的组件更简单地设置,因为它们不需要管理状态和实施变更处理程序。这使它们适合简单表格或新手反应的开发人员。
  2. 更少的样板代码:由于不受控制的组件不需要状态管理和事件处理程序来更新状态,因此通常会导致代码更少。这可以使应用程序更易于阅读和维护。
  3. 更好的性能:通过直接让DOM处理更改,您可以在某些情况下实现更好的性能。这对于处理大型或多个输入字段特别有用,在该字段中,每种键都不会触发状态更新和重新渲染。
  4. 与非反应代码的兼容性:如果您将REACT与现有的非反应代码集成在一起,则不受控制的组件可以更易于使用,因为它们不需要特定于React的状态管理系统。
  5. 对于简单用例:对于快速原型或简单的用例,不受控制的组件可以更简单,更快地实现,而无需复杂的状态管理。

如何访问React中不受控制的组件的值?

要访问React中不受控制的组件的值,您通常使用ref系统。您可以做到这一点:

  1. 创建一个参考:在组件中,使用React.createRef()或功能组件中的useRef挂钩创建REF。

     <code class="jsx">// In a class component constructor(props) { super(props); this.inputRef = React.createRef(); } // In a functional component const inputRef = useRef(null);</code>
    登录后复制
  2. 将REF附加到DOM元素:呈现您的表单元素时,将ref传递给它。

     <code class="jsx">// Class component <input type="text" defaultvalue="Initial Value" ref="{this.inputRef}"> // Functional component <input type="text" defaultvalue="Initial Value" ref="{inputRef}"></code>
    登录后复制
  3. 访问值:您可以在需要时访问未控制的组件的值,例如表单提交或任何其他事件。使用ref.current.value获取当前值。

     <code class="jsx">// In a class component handleSubmit = (event) => { event.preventDefault(); console.log('Input Value:', this.inputRef.current.value); } // In a functional component const handleSubmit = (event) => { event.preventDefault(); console.log('Input Value:', inputRef.current.value); }</code>
    登录后复制

通过遵循以下步骤,您可以有效地访问React中不受控制的组件的值。

您何时应该选择不受控制的组件,而不是反应开发中的受控组件?

在受控组件和不受控制的组件之间进行选择取决于您项目的特定需求和复杂性。在某些情况下,您可能更喜欢不受控制的组件:

  1. 简单表格:对于不需要对表单数据的细粒度控制的简单表单,不受控制的组件可以更容易,更快地实现。
  2. 快速原型制作:当您进行原型型或快速开发时,不受控制的组件可能会减少耗时,因为它们需要较少的设置。
  3. 与非反应代码集成:如果您将REACT集成到不使用React的现有应用程序中,则不受控制的组件可能更容易使用,因为它们与传统的DOM操作更加紧密地对齐。
  4. 性能问题:在性能至关重要的应用程序中,尤其是对于大型形式的应用程序,不受控制的组件可能会提供更好的性能,因为它们不会触发每次更改的重新订阅者。
  5. 旧版代码维护:如果您正在使用已经使用不受控制的组件的现有代码,则坚持使用相同模式以保持一致性和易于维护可能会更简单。
  6. 如果不需要状态管理:如果不需要由React的状态管理表单数据(例如,对于简单的搜索输入),则不受控制的组件可能更简单。

通常,如果您需要对形式数据及其验证的更多控制,则受控组件是更好的选择。但是,对于更简单或至关重要的方案,不受控制的组件可能非常合适。

以上是您如何在React中创建不受控制的组件?的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板