React コンポーネントのクリック イベント

クリックイベントメソッド

1. 従来のクラスメソッド (非推奨)

React で .bind(this) を使用する必要がある場合、イベント ハンドラでコンポーネントの this にアクセスできるようにするために、通常はクラス コンポーネント内にあります。以下は、.bind(this) の記述例です。

import React, {
    
     Component } from 'react';

class MyComponent extends Component {
    
    
  constructor(props) {
    
    
    super(props);

    this.state = {
    
    
      count: 0,
    };

    // 绑定 handleClick 方法的 this
    this.handleClick = this.handleClick.bind(this);
  }

  handleClick() {
    
    
    this.setState({
    
     count: this.state.count + 1 });
  }

  render() {
    
    
    return (
      <div>
        <p>Count: {
    
    this.state.count}</p>
        <button onClick={
    
    this.handleClick}>Click me</button>
      </div>
    );
  }
}

export default MyComponent;

この例では、 .bind(this) を使用してクラス コンストラクターで this.handleClick をバインドし、 handleClick の状態を保証します。メソッド内でコンポーネントに正しくアクセスできます。これが伝統的なアプローチです。

2. 従来のクラスメソッド 16.3.0 - 自動バインディング (非推奨)

React はバージョン 16.3.0 で新機能を導入しました。この機能はイベント ハンドラーをクラス プロパティとして定義することをサポートし、自動バインドを可能にします。this手動で使用する必要がなくなります。.bind(this) またはコンストラクター内のバインディング。

React 16.3.0 より前では、開発者は通常、コンストラクタで .bind(this) またはバインディングを使用して、イベント ハンドラ内で this が正しいことを確認する必要がありました。 。これにより、コードがある程度複雑になります。

React 16.3.0 以降、クラス属性とアロー関数の使用がより一般的になりました。クラス属性とアロー関数を使用すると、コードがより簡潔で読みやすく、自動的にバインドされるためthis、ボイラープレート コードが削減されます。 。したがって、React 16.3.0 以降を使用している場合は、.bind(this) を明示的に使用しなくても、クラス プロパティまたはアロー関数を使用してイベントを処理することがより簡単になります。

import React, {
    
     Component } from 'react';

class ClickExample extends Component {
    
    
  handleClick() {
    
    
    alert('Button clicked!');
  }

  render() {
    
    
    return (
      <button onClick={
    
    this.handleClick}>Click me</button>
    );
  }
}

export default ClickExample;

3. アロー関数

3.1. クラスコンポーネント

アロー関数を使用して React コンポーネントでメソッドを定義する方法を示す例を次に示します。

import React, { Component } from 'react';

class ArrowFunctionExample extends Component {
  state = {
    count: 0,
  };

  // 使用箭头函数定义事件处理函数
  handleClick = () => {
    this.setState((prevState) => ({
      count: prevState.count + 1,
    }));
  }

  render() {
    return (
      <div>
        <h1>Arrow Function Example</h1>
        <p>Count: {this.state.count}</p>
        {/* 使用箭头函数定义的事件处理函数 */}
        <button onClick={this.handleClick}>Click me</button>
      </div>
    );
  }
}

export default ArrowFunctionExample;

この例では、アロー関数handleClickを使用してボタンのクリック イベントを処理します。アロー関数は外側のスコープの this を自動的に継承するため、 handleClick 内部のコンポーネントの状態に簡単にアクセスできます。これによりコードがすっきりし、コンストラクターで .bind(this) やバインディングを明示的に使用する必要がなくなります。

3.2. 機能コンポーネント

アロー関数は、関数コンポーネント内の関数内で使用されます。以下に例を示します。

import React from 'react';

function ArrowFunctionInFunctionExample() {
  const showMessage = () => {
    alert('Hello from an arrow function in a function!');
  };

  return (
    <div>
      <h1>Arrow Function in Function Example</h1>
      <button onClick={showMessage}>Show Message</button>
    </div>
  );
}

export default ArrowFunctionInFunctionExample;

この例では、 という名前のアロー関数を使用して関数コンポーネント ArrowFunctionInFunctionExample を定義します。このアロー関数は関数コンポーネント内の関数で定義され、ボタンのクリック イベント ハンドラーで呼び出されてメッセージが表示されます。アロー関数を使用すると、外側のスコープの を自動的にキャプチャするため、 バインディングを処理することなく、関数内で関数を簡単に定義できます。 showMessagethisthis

3.3. インラインアロー関数

import React from 'react';

function ClickExample() {
    
    
  return (
    <button onClick={
    
    () => alert('Button clicked')}>Click me</button>
  );
}

export default ClickExample;

4、ステートフックを使用する

関数コンポーネント内で useState フックを使用してクリック イベントを作成するときに、コンポーネントの状態を簡単に管理できます。以下は、関数コンポーネントで useState Hook を使用してクリック イベントを作成する方法の例です。

import React, { useState } from 'react';

function ClickEventExample() {
  // 使用 useState Hook 来管理状态
  const [count, setCount] = useState(0);

  // 定义点击事件处理函数
  const handleClick = () => {
    setCount(count + 1);
  };

  return (
    <div>
      <h1>Click Event Example</h1>
      <p>Count: {count}</p>
      <button onClick={handleClick}>Click me</button>
    </div>
  );
}

export default ClickEventExample;

この例では、まず useState フックを使用して、count という名前の状態変数と setCountのステータス更新機能。次に、ボタンがクリックされたときに を呼び出して状態を更新するアロー関数 handleClick を定義し、それによってカウンターをインクリメントします。最後に、JSX の 関数をボタンのクリック イベントにバインドして、クリックされたときにカウンターの更新がトリガーされるようにします。 setCounthandleClick

おすすめ

転載: blog.csdn.net/weixin_35691921/article/details/134138345