美文网首页
React中的事件模型

React中的事件模型

作者: 追风的云月 | 来源:发表于2018-06-23 19:22 被阅读0次

React事件模型跟在原生DOM元素的事件模型非常相似。但是有一些语法上的区别:

  • React 事件使用驼峰命名,而不是全部小写。
  • 通过 JSX , 传递一个函数作为事件处理程序,而不是一个字符串。
<button onclick="activateLasers()">
  Activate Lasers
</button>
<button onClick={activateLasers}>
  Activate Lasers
</button>
  • 在 React 中你不能通过返回 return false 来阻止默认行为。必须显式调用 preventDefault 。

从v0.14起,从事件处理程序返回 false 将不再停止事件冒泡。 应该根据需要手动 e.stopPropagation() 或 e.preventDefault() 。

function ActionLink() {
  function handleClick(e) {
    e.preventDefault();
    console.log('The link was clicked.');
  }

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

React中的事件对象e是一个合成对象,而不是原生的事件对象,React已经对这个对象进行了封装,处理了浏览器兼容问题。

  • 这个对象是SyntheticEvent 的实例,这是一个跨浏览器原生事件包装器。 它具有与浏览器原生事件相同的接口,包括 stopPropagation() 和 preventDefault() ,除了事件在所有浏览器中他们工作方式都相同。
  • React的事件处理程序由冒泡阶段中的事件触发。 要为捕获阶段注册事件处理程序,使用 onClickCapture 来处理捕获阶段中的点击事件,而不是使用 onClick 。

在React中获取事件对象时有两种形式

  • 通过箭头函数显式传入
  • 通过bind隐式传入 e会作为最后一个参数隐式传入
<li onClick={e=>{this.changeActive(e,"a")}}>用户管理</li>
<li onClick={this.changeActive.bind(this,"b")}>适配器管理</li>
changeActive(param1,param2){
   console.log(param1);
   console.log(param2);
   console.log(this);
}

bind函数和箭头函数也是在React事件传参的方法

React中的事件处理程序由冒泡阶段中的事件触发。

要为捕获阶段注册事件处理程序,将 Capture 附加到事件名称中;使用 onClickCapture 来处理捕获阶段中的点击事件,而不是使用 onClick 。

React事件中的冒泡

1. 组织React合成事件冒泡
e.stopPropagation()
2. 阻止React合成事件与最外层document上的事件间的冒泡
e.nativeEvent.stopImmediatePropagation();

React中给window或者document绑定事件 在组件卸载的时候需要注销

相关文章

  • React中的事件模型

    React事件模型跟在原生DOM元素的事件模型非常相似。但是有一些语法上的区别: React 事件使用驼峰命名,而...

  • React 事件处理机制

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

  • React快速上手5-react中的事件和生命周期函数

    这节中我们将主要介绍react应用中的事件和生命周期函数 React事件 在react中,我们不用addEvent...

  • React基础篇(六)React中绑定事件的注意点

    本小节讲述在 React 中为 button 设置点击事件的注意点 1 前言 在 React 中,事件的名称都是 ...

  • react的setState是同步还是异步

    直接上结论: 在react的合成事件中是异步在原生事件、setTimeout中是同步。 首先,在react中,平常...

  • React的合成事件

    React的合成事件:React中声明的事件最终只绑定在document节点上, 通过事件代理的方式来实现事件的操...

  • React中的事件

    事件 在 React 中你不能通过返回 false(愚人码头注:即 return false; 语句) 来阻止默认...

  • React中的事件

    1.事件的名称要用onClick来代替onclick,onChange来代替onchange等; 2.改变状态值要...

  • react中的事件

    react基于Virtual DOM实现了一个SyntheticEvent(合成事件)层,我们所定义的事件处理会接...

  • #React中的事件

    这里的事件:React内置的DOM组件中的事件 1.给document注册事件 2.几乎所有的元素的事件处理,均在...

网友评论

      本文标题:React中的事件模型

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