参考视频:
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>
)
}
}
浙公网安备 33010602011771号