【React】第四部分 非受控组件和受控组件

【React】第四部分 非受控组件和受控组件



4. 非受控组件和受控组件

非受控组件

简单来说就是对于输入类的DOM现用现取就叫做非受控组件

 class Demo extends React.Component{
            render(){
                return (
                    <form onSubmit ={this.handleForm}>
                        用户名 : <input ref={c => this.userName = c} type="text" /><br/>
                        密码 : <input ref={c => this.password = c} type="password" /><br/>
                        <button>登录</button>
                    </form>
                )
            }

            handleForm = () =>{
                const {userName,password} = this
                alert(`用户名: ${userName.value} -- 密码: ${password.value}`)
            }
        }

        ReactDOM.render(<Demo/>,document.getElementById('box'))

受控组件

对于输入类的DOM随着输入发生变化不断维护到状态里,需要用的时候在从状态中取出来

 // 受控组件
        class Demo extends React.Component{
            render(){
                return (
                    <form onSubmit ={this.handleForm}>
                        用户名 : <input onChange = {this.saveUserName} type="text" /><br/>
                        密码 : <input onChange = {this.savePassword} type="password" /><br/>
                        <button>登录</button>
                    </form>
                )
            }

            // 初始化state
            state = {
                userName : '',
                password : ''
            }

            saveUserName = (e) =>{
                this.setState({userName:e.target.value})
            }

            savePassword = (e) =>{
                this.setState({password:e.target.value})
            }


            handleForm = () =>{
                const {userName,password} = this.state
                alert(`用户名: ${userName} -- 密码: ${password}`)
            }
        }

        ReactDOM.render(<Demo/>,document.getElementById('box'))

在开发中尽量写受控组件这种形式因为可以避免写很多的ref 影响性能


总结

以上就是今天要讲的内容,希望对大家有所帮助!!!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值