非受控组件
对于所有输入组件,现用现取为非受控组件 这类组件一般较多使用ref
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<!-- 准备好容器 -->
<div id="test"></div>
<!-- 引入依赖 ,引入的时候,必须就按照这个步骤-->
<script type="text/javascript" src="../js/react.development.js"></script>
<script type="text/javascript" src="../js/react-dom.development.js"></script>
<script type="text/javascript" src="../js/babel.min.js"></script>
<!--这里使用了babel用来解析jsx语法-->
<script type="text/babel">
class Login extends React.Component{
//现用现取为非受控组件
handleSubmit=()=>{
event.preventDefault()
console.log('this',this)
const {username,password} = this
console.log(`用户名是${username.value},密码是${password.value}`)
}
render(){
return(
<form onSubmit={this.handleSubmit}>
用户名<input ref={c=>this.username = c} type="text" name="username"/>
密码 <input ref={c=>this.password = c} type="password" name="password"/>
<button>登录</button>
</form>
)
}
}
ReactDOM.render(<Login/>,document.getElementById('test'))
</script>
</body>
</html>
复制代码
受控组件
随着输入维护状态是受控组件 一般较多使用oChange事件,ref有性能上的缺陷 推荐使用受控组件。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<!-- 准备好容器 -->
<div id="test"></div>
<!-- 引入依赖 ,引入的时候,必须就按照这个步骤-->
<script type="text/javascript" src="../js/react.development.js"></script>
<script type="text/javascript" src="../js/react-dom.development.js"></script>
<script type="text/javascript" src="../js/babel.min.js"></script>
<!--这里使用了babel用来解析jsx语法-->
<script type="text/babel">
class Login extends React.Component{
// 初始化状态
state={
username:'',
password:'',
}
// 随着输入维护状态是受控组件 ref有性能上的缺陷 推荐使用受控组件
handleSubmit=()=>{
event.preventDefault()
console.log('this',this)
const {username,password} = this.state
console.log(`用户名是${username},密码是${password}`)
}
userNameChange=(e)=>{
console.log(e.target.value);
this.setState({username:e.target.value})
}
passwordChange=(e)=>{
console.log(e.target.value);
this.setState({password:e.target.value})
}
render(){
return(
<form onSubmit={this.handleSubmit}>
用户名<input onChange={this.userNameChange} type="text" name="username"/>
密码 <input onChange={this.passwordChange} type="password" name="password"/>
<button>登录</button>
</form>
)
}
}
ReactDOM.render(<Login/>,document.getElementById('test'))
</script>
</body>
</html>
复制代码
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END