非受控组件
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>helloReact</title>
</head>
<body>
<div id="test"></div>
<script src="../js/react.development.js"></script>
<script src="../js/react-dom.development.js"></script>
<script src="../js/babel.min.js"></script>
<script type="text/babel">
class Login extends React.Component{
handleSubmit = (e) => {
e.preventDefault()
const {username, password} = this
alert(`你输入的用户名是: ${username.value}, 你输入的密码是: ${password.value}`)
}
render () {
return (
<form onSubmit={this.handleSubmit}>
用户名: <input ref={c => this.username = c} name="username"/>
密码: <input ref={c => this.password = c} name="password"/>
<button>登录</button>
</form>
)
}
}
ReactDOM.render(<Login/>, document.getElementById('test'))
/*
页面中的所有输入类的dom都是非受控组件,现用现取
*/
</script>
</body>
</html>
受控组件
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>helloReact</title>
</head>
<body>
<div id="test"></div>
<script src="../js/react.development.js"></script>
<script src="../js/react-dom.development.js"></script>
<script src="../js/babel.min.js"></script>
<script type="text/babel">
class Login extends React.Component{
state = {
username: '',
password: ''
}
saveUsername = (e) => {
this.setState({username: e.target.value})
}
savePassword = (e) => {
this.setState({password: e.target.value})
}
handleSubmit = (e) => {
e.preventDefault()
const {username, password} = this.state
alert(`你输入的用户名是: ${username}, 你输入的密码是: ${password}`)
}
render () {
return (
<form onSubmit={this.handleSubmit}>
用户名: <input onChange={this.saveUsername} name="username"/>
密码: <input onChange={this.savePassword} name="password"/>
<button>登录</button>
</form>
)
}
}
ReactDOM.render(<Login/>, document.getElementById('test'))
/*
页面中的所有输入类的dom都是非受控组件,现用现取
*/
</script>
</body>
</html>