對於全部輸入組件,現用現取爲非受控組件 這類組件通常較多使用refjavascript
<!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有性能上的缺陷 推薦使用受控組件。html
<!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>
複製代碼