react事件

事件的使用分为两种: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="点击按钮提示数据"/>&nbsp;
                        <button onClick={this.showData}>点我提示左侧的数据</button>&nbsp;
                        <input onBlur={this.showData2} type="text" placeholder="失去焦点提示数据"/>&nbsp;
                    </div>
                )
            }
        }
        //渲染组件到页面
        ReactDOM.render(<Demo a="1" b="2"/>,document.getElementById('test'))

看的出来,第一种ref的写法,有点像vue的v-model双向绑定的意思。先定义要监听的东西,在需要的事件里直接获取;

第二种就是常规的事件触发,在函数里获取这个事件的东西。

原文地址:https://www.cnblogs.com/ssszjh/p/14592164.html