📜  HTML 和 React 事件处理的区别(1)

📅  最后修改于: 2023-12-03 14:41:54.995000             🧑  作者: Mango

HTML 和 React 事件处理的区别

HTML 的事件处理

在 HTML 中,事件处理是通过直接在 HTML 标签中添加事件属性来处理的,例如:

<button onclick="handleClick()">Click me!</button>

在这个例子中,当用户点击这个按钮时,将调用 handleClick 函数。

React 的事件处理

在 React 中,事件处理是通过在 JSX 中添加事件处理函数的方式来处理的,例如:

function handleClick() {
  console.log('Button clicked!');
}

function App() {
  return (
    <button onClick={handleClick}>Click me!</button>
  );
}

在这个例子中,当用户点击这个按钮时,将调用 handleClick 函数。

区别
1. 事件名称的大小写

在 HTML 中,事件名称是全小写的,例如 onclick,而在 React 中,事件名称是驼峰式的,例如 onClick

function handleClick() {
  console.log('Button clicked!');
}

// HTML
<button onclick={handleClick}>Click me!</button>

// React
<button onClick={handleClick}>Click me!</button>
2. 事件处理函数的方式

在 HTML 中,事件处理函数是直接在 HTML 标签中添加的,而在 React 中,事件处理函数是通过在 JSX 中添加的。

<!-- HTML -->
<button onclick="handleClick()">Click me!</button>

// React
<button onClick={handleClick}>Click me!</button>
3. 事件对象的获取

在 HTML 中,可以通过 event 参数来获取事件对象,例如:

<button onclick="handleClick(event)">Click me!</button>

function handleClick(event) {
  console.log(event);
}

而在 React 中,事件对象是作为参数传递给事件处理函数的。

function handleClick(event) {
  console.log(event);
}

function App() {
  return (
    <button onClick={handleClick}>Click me!</button>
  );
}
4. this 的指向

在 HTML 中,在事件处理函数中,this 指向触发事件的 DOM 元素。

<button onclick="console.log(this)">Click me!</button>

而在 React 中,事件处理函数中的 this 默认不会指向组件实例。如果需要访问组件实例,可以使用箭头函数或 .bind 方法。

class App extends React.Component {
  handleClick1() {
    console.log(this); // undefined
  }

  handleClick2 = () => {
    console.log(this); // App
  }

  handleClick3() {
    console.log(this); // App
  }

  render() {
    return (
      <>
        <button onClick={this.handleClick1}>Click me!</button>
        <button onClick={this.handleClick2}>Click me!</button>
        <button onClick={this.handleClick3.bind(this)}>Click me!</button>
      </>
    );
  }
}

以上就是 HTML 和 React 事件处理的区别。在 React 中,事件处理比 HTML 更加简洁和灵活,使用 React 可以让开发变得更加高效和优雅。