事件的使用分为两种:1.通过ref容器;2.通过event.target
1.通过onXxx属性指定事件处理函数(注意大小写)
a.React使用的是自定义(合成)事件, 而不是使用的原生DOM事件 —————— 为了更好的兼容性
a.React中的事件是通过事件委托方式处理的(委托给组件最外层的元素) ————————为了的高效
2.通过onXxx属性指定事件处理函数(注意大小写)
event.target得到发生事件的DOM元素对象 ——————————不要过度使用ref
//创建组件 class Demo extends React.Component{ /* (1).通过onXxx属性指定事件处理函数(注意大小写) a.React使用的是自定义(合成)事件, 而不是使用的原生DOM事件 —————— 为了更好的兼容性 b.React中的事件是通过事件委托方式处理的(委托给组件最外层的元素) ————————为了的高效 (2).通过event.target得到发生事件的DOM元素对象 ——————————不要过度使用ref */ //创建ref容器 myRef = React.createRef() //展示左侧输入框的数据 showData = ()=>{ console.log(this.myRef.current.value); } //展示右侧输入框的数据 showData2 = (event)=>{ console.log(event.target.value); // alert(event.target.value); } render(){ return( <div> <input ref={this.myRef} type="text" placeholder="点击按钮提示数据"/> <button onClick={this.showData}>点我提示左侧的数据</button> <input onBlur={this.showData2} type="text" placeholder="失去焦点提示数据"/> </div> ) } } //渲染组件到页面 ReactDOM.render(<Demo a="1" b="2"/>,document.getElementById('test'))
看的出来,第一种ref的写法,有点像vue的v-model双向绑定的意思。先定义要监听的东西,在需要的事件里直接获取;
第二种就是常规的事件触发,在函数里获取这个事件的东西。