美文网首页
React基础-不受控组件与受控组件的区别

React基础-不受控组件与受控组件的区别

作者: 码枫云 | 来源:发表于2020-01-10 21:20 被阅读0次

<h4>不受控组件</h4>
<b>不受控组件,需要从refs中取值,组件中表单元素没有写value值,与state数据无关,无法由state管理,无法做实时的数据校验。一般在对值的控制度不高的情况下使用</b>

import React, { Component } from 'react'

export default class apps4 extends Component {
    constructor(props){
        super(props)
        this.state = {}
    }
    UsNamesubmit(){
        console.log(this.refs.username.value)
    }
    render() {
        return (
            <div>
                姓名: <input ref="username" type="text"/>
                <button onClick={this.UsNamesubmit.bind(this)}>打印名字</button>
            </div>
        )
    }
}

<h4>受控组件</h4>

受控组件 ,不需要从refs中获取元素的值,数据实时从this.state中获取,方便进行数据的实时校验,提高用户体验,适合在数据需要实时进行严格的逻辑时使用(判断值合法长度,是否为手机号等)

import React, { Component } from 'react'
export default class apps5 extends Component {
    constructor(props){
        super(props)
        this.state = {
            username:'',
            psw:''
        }
    }
    changeName(val){
        this.setState({
            username:val.target.value
        })
    }
    changePsw(val){
        this.setState({
            psw:val.target.value
        })
    }
    infoSubmit(){
        console.log(this.state.username);
        console.log(this.state.psw);
        
    }
    render() {
        return (
            <div>
                姓名: <input type="text" value={this.state.username} onChange={this.changeName.bind(this)}/>{/* 绑定value值和onChange是必须的 */}
                密码: <input type="password" value={this.state.psw} onChange={this.changePsw.bind(this)}/>
                <button onClick={this.infoSubmit.bind(this)}>打印姓名密码</button>
            </div>
        )
    }
}

相关文章

网友评论

      本文标题:React基础-不受控组件与受控组件的区别

      本文链接:https://www.haomeiwen.com/subject/nabmactx.html