ホームページ > ウェブフロントエンド > jsチュートリアル > ES6 アロー関数は React のクラスメソッドを永続的にバインドできますか?

ES6 アロー関数は React のクラスメソッドを永続的にバインドできますか?

Patricia Arquette
リリース: 2024-12-13 11:15:10
オリジナル
246 人が閲覧しました

Can ES6 Arrow Functions Permanently Bind Class Methods in React?

ES6 クラスのアロー関数をクラス メソッドとして利用する方法

最初に ES6 クラスを React に組み込むときは、インスタンスをバインドするのが一般的でした(以下の例で示すように) メソッドを明示的に使用します。ただし、重要な疑問が生じます。ES6 では、アロー関数を使用してクラス関数をクラス インスタンスに永続的にバインドし、コールバックとしての使用を簡素化することは可能ですか?

class SomeClass extends React.Component {
  // Bound method
  constructor() {
    this.handleInputChange = this.handleInputChange.bind(this);
  }
}
ログイン後にコピー

CoffeeScript はこの機能を提供しますが、それがどうかは不明のままです。 ES6 でも同様のことが実現できます。

class SomeClass extends React.Component {
  // Attempted arrow function binding
  handleInputChange(val) => {
    console.log('selectionMade: ', val);
  }
}
ログイン後にコピー

この質問は、アロー関数をクラス インスタンスに永続的にバインドできるかどうかを理解することを目的としています。 ES6 では、それらをコールバック関数として簡単に利用できるようになり、setTimeout などの関数に渡されるときに正しいコンテキストが保証されます。

解決策: 構文を修正

当初の試みはアロー関数を使用してクラス メソッドを定義すると、軽微な構文エラーが含まれます。正しい構文を以下に示します。

class SomeClass extends React.Component {
  handleInputChange = (val) => {
    console.log('selectionMade: ', val);
  }
}
ログイン後にコピー

この構文では、コンパイルを成功させるために Babel 内で実験的な機能をアクティブにする必要があることに注意することが重要です。必要なプラグイン (transform-class-properties) をインストールすることで、これらの実験的な機能を有効にすることができます。

さらに、クラス フィールドと静的プロパティに関する包括的な説明は、公式提案ドキュメントで見つけることができます。

以上がES6 アロー関数は React のクラスメソッドを永続的にバインドできますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート