参考视频:

https://www.bilibili.com/video/BV1wy4y1D7JT?p=34

https://www.bilibili.com/video/BV1HC4y1t7hi 

 

受控组件:

  表单元素 <Input> ,<textare>和 <select> 会自己维护 state,并且根据用户的输入进行更新。

  在React,可以变状态 通常保存在组件的state属性中,并且只能通过 setState()更新。

  可以把两者结合起来,让React 的state成为唯一的数据原,渲染表单的react组件还受到用户的输入过程中,表单发生的操作。被React 以这种方式控制的表单输入元素,就成为受控组件。

 

非受控组件:

  表单状态由自身维护,而不是由state来维护。

 

一般来说:受控组件:官方希望react来托管 state的值。

非受控组件:引入第三方的库。

 

 

代码:就是事件里面的函数,可以控值state的值,然后调用state的值,进行使用。(值在那呢? event.target.value)

 

import React, { Component } from 'react'

export default class App extends Component {
    state = {
        username:'',
        password:''
    }

    handleSubmit = (event) => {
        event.preventDefault() //阻止表单提交。
        const {username,password} = this.state
        alert(`useranme:${username},password: ${password}`)//取出来!
    }
    saveUserName = (event) =>{
        console.log('eee')
        this.setState({
            username:event.target.value
        })
    }
    savePassword = (event) =>{
        this.setState({
            password: event.target.value
        })
    }
    render() {
        return (
            <div>
                <form onSubmit={this.handleSubmit} >
                    用户名:<input onChange={this.saveUserName} type= "text" name="username" />
                    密码: <input onChange={this.savePassword} type="password" name="password" />
                <button>登录</button>
                </form>
            </div>
        )
    }
}

 

posted on 2021-02-25 16:46  程序员草莓  阅读(59)  评论(0编辑  收藏  举报