美文网首页
React对事件的处理

React对事件的处理

作者: yanghanbin_it | 来源:发表于2017-06-10 15:53 被阅读0次

与原生的事件处理有点差异,具体表现在:

  1. react使用驼峰事件命名,而不是小写
  2. 对于句柄来说传递的是一个jsx函数
//原生的写法
<button onclick="activateLasers()">
  Activate Lasers
</button>
//react写法
<button onClick={activateLasers}>
  Activate Lasers
</button>
  1. 阻止浏览器默认行为,原生事件处理,可以通过返回false来阻止阻止浏览器默认行为,也可以通过调用事件对象的preventDefault方法来实现。而react只能通过调用preventDefault来实现。
//原生的处理方式
<a href="#" onclick="console.log('The link was clicked.'); return false">
  Click me
</a>
//在react中
function ActionLink() {
    function handleClick(e) {
        e.preventDefault();
        console.log('The link was clicked.');
    }

    return (
        <a href="#" onClick={handleClick}>
            Click me
    </a>
    );
}

实例: 在页面实现按钮开关
在Toggle组件中,返回了button,根据状态显示on/off文案,并且监听点击事件,回调函数为handleClick,在回调中设置组件的状态,state改变后,则又调用render方法,更新UI。

class Toggle extends React.Component {
    constructor(props) {
        super(props);
        this.state = { isToggleOn: true };
        this.handleClick = this.handleClick.bind(this);
    }
    handleClick() {
        this.setState(prevState => ({
            isToggleOn: !prevState.isToggleOn
        }));
    }
    render() {
        return (
            <button onClick={this.handleClick}>
                {this.state.isToggleOn ? 'ON' : 'OFF'}
            </button>
        );
    }
}
ReactDOM.render(
    <Toggle />,
    document.getElementById('root')
);

此处bind函数很有意思:先来看,bind的函数作用:改变函数执行的上下文,也就是this的指向。
bind函数会创建一个新的函数,称为绑定函数,并且调用的时候上下文指向创建时传入的第一个参数。
在本例中,点击出发onClick事件后,执行this.handleClick,此时的this指向是当前Toggle对象。

如果不使用bind函数,还可以使用属性初始化语法,也可以直接在钩子函数处使用箭头函数

handleClick = () => {
        this.setState(prevState => ({
            isToggleOn: !prevState.isToggleOn
        }));
    }
render() {
        return (
            <button onClick={(e) => this.handleClick(e)}>
                Click me
      </button>
        );
    }

相关文章

  • 2018-11-07 react 事件处理

    react事件处理和dom事件处理是相似的。 react: Dom: 所以: React事件绑定属性的命名采用驼峰...

  • react文档——事件处理

    事件处理 React 元素的事件处理和 DOM 元素的事件处理非常相似。但也有一些语法差异: React 事件使用...

  • React 事件处理机制

    React在处理事件和HTML中JS处理事件不同,本文介绍React中的事件处理机制。React中不同通过返回fa...

  • react入门教程二

    react事件 由于react的虚拟DOM模式,react对所有的事件也都做了专门的处理和优化,官方的说法是引入了...

  • React基础(6) -- 事件处理

    React 事件处理 React 元素的事件处理和 DOM 元素类似。但是有一点语法上的不同: React 事件绑...

  • ReactJS_06 React 事件处理

    React 事件处理 React 元素的事件处理和 DOM 元素类似。但是有一点语法上的不同: React 事件绑...

  • React 事件处理

    React 事件处理 React 元素的事件处理和 DOM 元素类似。但是有一点语法上的不同: React 事件绑...

  • react随笔5 事件处理

    事件处理 React元素的事件处理和DOM元素的事件处理很相似,但是有一点语法上的不同: React事件绑定属性的...

  • React事件绑定this的几种方法

    React事件处理函数绑定this的集中方法 Follow me on GitHub React事件处理函数绑定t...

  • 学习笔记:React事件处理

    一、React 事件处理 React 元素的事件处理和 DOM 元素类似,但是有一点语法上的不同。 React 事...

网友评论

      本文标题:React对事件的处理

      本文链接:https://www.haomeiwen.com/subject/mliqqxtx.html