React中不受控制的组件是由DOM本身处理形式数据的那些,而不是由组件的状态管理。要创建一个不受控制的组件,您可以执行以下步骤:
使用defaultValue
Prop :而不是使用value
来设置表单元素的初始值(这将使它受到控制),而是使用defaultValue
。例如,对于输入字段,您将要这样做:
<code class="jsx"><input type="text" defaultvalue="Initial Value"></code>
通过参考访问数据:由于数据未由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应用程序中使用不受控制的组件带有几个好处:
要访问React中不受控制的组件的值,您通常使用ref
系统。您可以做到这一点:
创建一个参考:在组件中,使用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>
将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>
访问值:您可以在需要时访问未控制的组件的值,例如表单提交或任何其他事件。使用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中不受控制的组件的值。
在受控组件和不受控制的组件之间进行选择取决于您项目的特定需求和复杂性。在某些情况下,您可能更喜欢不受控制的组件:
通常,如果您需要对形式数据及其验证的更多控制,则受控组件是更好的选择。但是,对于更简单或至关重要的方案,不受控制的组件可能非常合适。
以上是您如何在React中创建不受控制的组件?的详细内容。更多信息请关注PHP中文网其他相关文章!