事件处理 (精读React官方文档—06)

简介: 事件处理 (精读React官方文档—06)

这是我参与更文挑战的第19天,活动详情查看:更文挑战

React中的事件处理

  • React中的事件的命名采用小驼峰的命名方式,小驼峰的实例onClcik
  • 传统的HTML事件处理函数传入的是一个字符串
<button onclick="activateLasers()">
  Activate Lasers
</button>
复制代码
  • React中事件处理通过大括号进行包裹
<button onClick={activateLasers}>
  Activate Lasers
</button>
复制代码
  • 在React中要想阻止默认行为必须要通过preventDefault,不能通过返回false的方式。

传统的 HTML 中阻止表单的默认提交行为。

<form onsubmit="console.log('You clicked submit.'); return false">
  <button type="submit">Submit</button>
</form>
复制代码

React中阻止表单的默认提交行为

function Form() {
  function handleSubmit(e) {
    e.preventDefault();
    console.log('You clicked submit.');
  }
  return (
    <form onSubmit={handleSubmit}>
      <button type="submit">Submit</button>
    </form>
  );
}
复制代码
  • React监听DOM元素,一般不是通过addEventListener。而是通过组件中的方法。
  • 谨慎的对待JSX语法中回调函数的this,class的方法默认不会绑定this,为了解决这类问题,我们一般在回调函数中使用箭头函数。
class LoggingButton extends React.Component {
  handleClick() {
    console.log('this is:', this);
  }
  render() {
    // 此语法确保 `handleClick` 内的 `this` 已被绑定。
    return (
      <button onClick={() => this.handleClick()}>
        Click me
      </button>
    );
  }
}
复制代码

向事件处理程序传递参数

官方描述:在循环中,通常我们会为事件处理函数传递额外的参数。例如,若 id 是你要删除那一行的 ID,以下两种方式都可以向事件处理函数传递参数。

<button onClick={(e) => this.deleteRow(id, e)}>Delete Row</button>
<button onClick={this.deleteRow.bind(this, id)}>Delete Row</button>
复制代码
  • 上面的两种方式是等价的,一种是通过箭头函数,一种是通过bind来绑定JSX回调函数中的this,然后传入参数。

官方描述:在这两种情况下,React 的事件对象 e 会被作为第二个参数传递。如果通过箭头函数的方式,事件对象必须显式的进行传递,而通过 bind 的方式,事件对象以及更多的参数将会被隐式的进行传递。

解读

  • 通过箭头函数的方式,事件对象需要显示传递,而通过bind则可以进行隐式传递。

欢迎大家关注我的专栏,一起学习React官方文档,每日更新哦!


相关文章
|
2月前
|
移动开发 前端开发 JavaScript
React 表单与事件
10月更文挑战第10天
44 1
|
1月前
|
前端开发 JavaScript 开发者
React 事件处理机制详解
【10月更文挑战第23天】本文介绍了 React 的事件处理机制,包括事件绑定、事件对象、常见问题及解决方案。通过基础概念和代码示例,详细讲解了如何处理 `this` 绑定、性能优化、阻止默认行为和事件委托等问题,帮助开发者编写高效、可维护的 React 应用程序。
114 4
|
2月前
|
前端开发 JavaScript IDE
React 事件处理
10月更文挑战第8天
24 1
|
2月前
|
前端开发 JavaScript
一文详解React事件中this指向,面试必备
一文详解React事件中this指向,面试必备
55 0
|
3月前
|
前端开发 JavaScript
react学习(19)事件处理
react学习(19)事件处理
|
3月前
|
前端开发 JavaScript
React的事件与原生事件的执行顺序?
React的事件与原生事件的执行顺序?
|
4月前
|
前端开发 JavaScript Java
React 中的合成事件
【8月更文挑战第30天】
60 6
|
4月前
|
前端开发 JavaScript
React 中的事件是什么?
【8月更文挑战第30天】
84 5
|
4月前
|
存储 前端开发 JavaScript
React中的事件处理(八)
【8月更文挑战第15天】React中的事件处理
36 1
|
4月前
|
前端开发 JavaScript 开发者
如何在 React 中处理事件?
【8月更文挑战第31天】
50 0