react受控组件与非受控组件

受控组件与非受控组件
###1非受控组件
非受控组件不需要写事件处理函数,由DOM自身进行维护。一般通过Ref进行DOM的绑定。

(1)创建组件

    class Login extends React.Component{
        handleSubmit=(event)=>{
            event.preventDefault() // 阻止默认提交事件
            const {username,password} = this
        }
        render(){
            <form action = '' onSubmit={this.handleSubmit}>
                用户名:<input ref={c=> this.username = c } type='text' />
                密码:<input ref={c=> this.password = c } type='password' />
                <button>登录</button>
            </form>
        }
    } 
    ReactDOM.render(<Login />,document.getElementById('test'))

###2受控组件
针对于表单元素而言,如果数据由组件本身进行维护,让react的state状态成为唯一数据源的话,那就是受控组件。

    class Login extends React.Component{
        // 初始化状态
        state={
            username:'',
            password:'',
        }
        handleSubmit=(event)=>{
            event.preventDefault() // 阻止默认提交事件
            const {username,password} = this
        }
        handleSubmit=(event)=>{
                this.setState({username:event.target.value})
        render(){
            <form action = '' >
                用户名:<input onChange={this.handleSubmit} type='text' />
                密码:<input ref={c=> this.password = c } type='password' />
                <button>登录</button>
            </form>
        }
    } 
    ReactDOM.render(<Login />,document.getElementById('test'))

React 有两种不同的方式来处理表单输入。

如果一个 input 表单元素的值是由 React 控制,就其称为受控组件。当用户将数据输入到受控组件时,会触发修改状态的事件处理器,这时由你的代码来决定此输入是否有效(如果有效就使用更新后的值重新渲染)。如果不重新渲染,则表单元素将保持不变。

一个非受控组件,就像是运行在 React 体系之外的表单元素。当用户将数据输入到表单字段(例如input 等)时,React 不需要做任何事情就可以映射更新后的信息。然而,这也意味着,你无法强制给这个表单字段设置一个特定值。

在大多数情况下,你应该使用受控组件。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值