react之事件

186 阅读1分钟

React 中事件:

  • 1、命名采用小驼峰式(camelCase),而不是纯小写
  • 2、不能通过返回 false 的方式阻止默认行为。必须显式的使用 preventDefault
  • 3、e 是一个合成事件SyntheticEvent,所以不需要担心跨浏览器的兼容性问题

关于合成事件SyntheticEvent:

SyntheticEvent 实例将被传递给你的事件处理函数,它是浏览器的原生事件的跨浏览器包装器。除兼容所有浏览器外,它还拥有和浏览器原生事件相同的接口。

  • 当你需要使用浏览器的底层事件时,只需要使用 nativeEvent 属性来获取即可。
  • 如果你想异步访问事件属性,你需在事件上调用 event.persist()
  • 表示捕获阶段事件处理程序加上Capture,如onClickCapture,onClick表示冒泡阶段事件处理程序
  • SyntheticEvent 对象可能会被重用,而且在事件回调函数被调用后,所有的属性都会无效
function onClick(event) {
  console.log(event); // => nullified object.
  console.log(event.type); // => "click"
  const eventType = event.type; // => "click"

  setTimeout(function() {
    console.log(event.type); // => null
    console.log(eventType); // => "click"
  }, 0);

  // 不起作用,this.state.clickEvent 的值将会只包含 null
  this.setState({clickEvent: event});

  // 你仍然可以导出事件属性
  this.setState({eventType: event.type});
}