受控组件与⾮受控组件的选⽤标准

本文介绍了React中受控组件和非受控组件的概念及区别。非受控组件的数据由DOM节点管理,适用于简单表单场景;受控组件的数据由state管理,能实时获取并验证数据,适用于需要复杂交互的表单。在选择使用哪种组件时,应根据实际需求来决定。推荐在大多数情况下使用受控组件,以确保更好的数据管理和交互体验。
摘要由CSDN通过智能技术生成

非受控组件

表单数据交由DOM节点管理,特点是表单数据在需要时进⾏获取,代码实现相对简单。

示例代码:

import React, { useRef } from "react"

function App(){
    const username = useRef()
    const handleSubmit = event => {
      event.preventDefault()
      // 需要时获取数据
      console.log(username.current.value)
    }
    return (
        <form onSubmit={handleSubmit}>
          <input type="text" ref={username} />
          <input type="submit" />
        </form>
    )
}

export default App

受控组件

表单数据交由state对象管理,特点是可以实时得到表单数据,代码相对复杂。

import React, { useState } from "react"

function App(){
    const [username, setUsername] = useState('')
    const handleSubmit = event => {
      event.preventDefault()
      console.log(username)
    }
    const handleChange = event => {
      // 同步到状态
      setUsername(event.target.value)
    }
    return (
        <form onSubmit={handleSubmit}>
          <input type="text" value={username} onChange={handleChange} />
          <input type="submit" />
        </form>
    )
}

export default App

选用标准

受控组件和⾮受控组件都有其特点,应该根据需求场进⾏选择;

在⼤多数情况下,推荐使⽤受控组件处理表单数据;

如果表单在数据交互⽅⾯⽐简单,使⽤⾮受控表单,否则使⽤受控表单;

场景

⾮受控

受控

表单提交时取值

表单提交时验证

表单项元素实时验证

×

根据条件禁⽤提交按钮

×

强制输⼊内容的格式

×

⼀个数据的多个输⼊

×

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值