React中的事件模型

2018-06-23  本文已影响0人  追风的云月

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

<button onclick="activateLasers()">
  Activate Lasers
</button>
<button onClick={activateLasers}>
  Activate Lasers
</button>

从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已经对这个对象进行了封装,处理了浏览器兼容问题。

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

<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绑定事件 在组件卸载的时候需要注销

上一篇 下一篇

猜你喜欢

热点阅读