React 事件對象、鍵盤事件、表單事件、ref獲取dom節點、react實現類似Vue雙向數據綁定
阿新 • • 發佈:2019-02-23
nbsp 產生 影響 () button stat tin cto 屬性
1、案例實現代碼
import React, { Component } from ‘react‘; /** * 事件對象、鍵盤事件、表單事件、ref獲取dom節點、react實現類似Vue雙向數據綁定 * 事件對象: 在觸發DOM上的某個事件時,會產生一個事件對象event,這個對象包含著所有與事件有關的信息 * 表單事件: 獲取表單的值 * 1、監聽表單的改變事件 ---onChange * 2、在改變的事件裏面獲取表單輸入的值 ---event * 3、把表單輸入的值賦值給username ---inputChange * 4、點擊按鈕的時候獲取state裏面的username ---getInput * ref獲取dom節點: 獲取表單的值 * 1、監聽表單的改變事件 ---onChange * 2、在改變的事件裏面獲取表單輸入的值 ---ref * 3、把表單輸入的值賦值給username ---inputChange * 4、點擊按鈕的時候獲取state裏面的username ---getInput *鍵盤事件: * 1、onKeyUp * 2、onKeyDown *react實現類似Vue雙向數據綁定 * 1、 <input value={this.state.username} onChange={this.inputChange1}/> * 2、inputChange1=(e)=>{ this.setState({ username:e.target.value }) } **/ class Home5 extends Component{ constructor(props){ super(props); this.state={ title:‘這是Home5‘, username:"楊文傑" } } /** * 一般通過這個事件對象獲取Dom節點,即event.target * 通過event獲取dom屬性,即event.target.getAttribute * @param event 事件對象 */ run=(event)=>{ alert(this.state.title) alert(event.target) ;//獲取Dom節點 ,一般也只是獲取Dom節點 event.target.style.background=‘red‘; //獲取Dom的屬性的值 alert(event.target.getAttribute(‘aid‘)) } /** * 獲取表單的值 * @param e */ inputChange=(e)=>{ console.log(e.target.value);this.setState({ username:e.target.value }); } getInput=()=>{ alert(this.state.username) } /** * Ref獲取表單值 * @param e */ inputChangeRef=(e)=>{ /** * 獲取Dom節點 * 1、給元素定義ref屬性 * <input ref="username" /> * 2、 通過this.refs.username 獲取Dom節點 */ let val = this.refs.username.value; this.setState({ username:val }) } getInputRef=()=>{ alert(this.state.username) } /** * 鍵盤事件 * @param e */ inputKeyUp=(e)=>{ console.log(e.keyCode); if(e.keyCode){ alert(e.target.value); } } inputKeyDown=(e)=>{ console.log(e.keyCode); if(e.keyCode){ alert(e.target.value); } } /** * 雙向數據綁定 * @param e */ inputChange1=(e)=>{ this.setState({ username:e.target.value }) } changeUsernameValue=(e)=>{ this.setState({ username:"改變了" }) } render(){ return( <div> {this.state.title} <p>事件對象演示</p> <button aid ="123" onClick={this.run}>事件對象</button> <br/> <p>表單事件對象演示</p> <input onChange={this.inputChange}/><button onClick={this.getInput}>獲取input輸入框值</button> <br/> <p>表單事件對象演示---ref獲取表單值</p> <input ref="username" onChange={this.inputChangeRef}/><button onClick={this.getInputRef}>獲取input輸入框值</button> <br/> <p>鍵盤事件</p> <input onKeyUp={this.inputKeyUp}/><button>鍵盤事件</button> <br/> <input onKeyDown={this.inputKeyDown}/><button>鍵盤事件</button> <br/> <p>雙向數據綁定---model改變影響view view改變反過來影響model</p> <input value={this.state.username} onChange={this.inputChange1}/> {this.state.username} <br/> <button onClick={this.changeUsernameValue}>雙向數據修改</button> </div> ) } } export default Home5;
React 事件對象、鍵盤事件、表單事件、ref獲取dom節點、react實現類似Vue雙向數據綁定