react事件

1,371 阅读3分钟

react中绑定事件

render() {
  return (
    // 这样绑定在方法中,this指向会发生变化
    <button onClick={this.handleClick}>点击</button>  
  )
}

绑定事件处理函数的this到当前组件

class MyComponent extends React.Component {
    constructor(props) {
        super(props);
        this.state = {
            name:"老大",
            age: 0
        };
        // 在constructor中提前对事件进行绑定
        this.addOneClick=this.addOneClick.bind(this);
    }
    
    addOneClick(e) {
        e.preventDefault();
        this.setState({ age: this.state.age + 1 });
    }
    
    //在此处采用箭头函数写法
    arrow = (e) => {
        e.preventDefault();
        this.setState({ age: this.state.age + 1 })
    }
    
    render() {
        return <div>
            // 通过bind方法进行原地绑定,从而改变this指向
            <a href="#" onClick={this.addOneClick.bind(this)}>点我啊</a>
            // 通过箭头函数
             <a href="#" onClick={e => this.addOneClick(e)}>点我啊</a>
            //  addOneClick方法在constructor中已经绑定
            <a href="#" onClick={this.addOneClick}>点我啊</a>
            // 箭头函数写在方法里面
            <a href="#" onClick={this.arrow}>点我啊</a>
        </div>;
    }
}

注意事项

  1. React 事件绑定属性的命名采用驼峰式写法(如:onClick,onKeyUp),而不全是小写字母。
  2. 在React当中,return false不会阻止事件的默认行为,需要调用 e.preventDefault();

事件传值

    render() {
        return <div>
            // bind方法传参
            <a href="#" onClick={this.addOneClick.bind(this, 'abc')}>点我啊</a>
            // 箭头函数传参
             <a href="#" onClick={(e, 'abc') => this.addOneClick(e, 'abc')}>点我啊</a>
        </div>;
    }

事件总览

事件类 事件名称 描述
鼠标类 onClick 点击事件
onContextMenu 只有 Firefox 中支持 contextmenu 属性
onDoubleClick 双击事件
onMouseDown 事件会在鼠标按键被按下时发生
onMouseEnter 事件会在鼠标划入时发生
onMouseLeave 事件会在鼠标划出时发生
onMouseMove 事件会在鼠标移动的时候发生
onMouseOut 事件会在鼠标划出时发生
onMouseOver 事件会在鼠标穿透的时候发生
onMouseUp 事件会在鼠标松开的时候发生
拖拽类 onDrop 该事件在元素正在拖动时触发
onDrag 该事件在拖动元素放置在目标区域时触发
onDragEnd 该事件在用户完成元素的拖动时触发
onDragEnter 该事件在拖动的元素进入放置目标时触发
onDragLeave 该事件在拖动元素离开放置目标时触发
onDragOver 该事件在拖动元素在放置目标上时触发
onDragStart 该事件在用户开始拖动元素时触发
键盘 onKeyDown 某个键盘按键被按下。
onKeyPress 某个键盘按键被按下并松开。
onKeyUp 某个键盘按键被松开。
剪切类 onCopy 该事件在用户拷贝元素内容时触发
onCut 该事件在用户剪切元素内容时触发
onPaste 该事件在用户粘贴元素内容时触发
表单类 onChange 该事件在表单元素的内容改变时触发
onInput 元素获取用户输入时触发
onSubmit 表单提交时触发
焦点事件 onFocus 聚焦的时候出发
onBlur 失焦的时候触发
UI元素类 onScroll 当文档被滚动时发生的事件。
滚动 onWheel 该事件在鼠标滚轮在元素上下滚动时触发
组成事件 onCompositionEnd 输入完成时触发
onCompositionStart 输入开始时触发
onCompositionUpdate 输入进行中触发