[解決済み】アロー関数(パブリッククラスフィールド)をクラスメソッドとして使用するには?
2022-04-13 06:48:34
質問
私はReactでES6クラスを使うのが初めてです。これまではメソッドを現在のオブジェクトにバインドしていましたが(最初の例に示す)、ES6ではクラス関数を矢印でクラスインスタンスに恒久的にバインドできるのでしょうか。(コールバック関数として渡すときに便利です。)CoffeeScriptでできるように使おうとすると、エラーが発生します。
class SomeClass extends React.Component {
// Instead of this
constructor(){
this.handleInputChange = this.handleInputChange.bind(this)
}
// Can I somehow do this? Am i just getting the syntax wrong?
handleInputChange (val) => {
console.log('selectionMade: ', val);
}
ということで、もし私が
SomeClass.handleInputChange
に、例えば
setTimeout
を指定すると、クラスインスタンスにスコープされることになります。
window
オブジェクトを作成します。
どのように解決するのですか?
あなたの構文は少しずれており、プロパティ名の後に等号がないだけです。
class SomeClass extends React.Component {
handleInputChange = (val) => {
console.log('selectionMade: ', val);
}
}
これは実験的な機能です。これをコンパイルするためには、Babelで実験的な機能を有効にする必要があります。 これ は、experimentalを有効にしたデモです。
babel で実験的な機能を使用するには、以下のサイトから関連するプラグインをインストールします。
こちら
. この特定の機能を使用するには
transform-class-properties
プラグイン
:
{
"plugins": [
"transform-class-properties"
]
}
クラス・フィールドとスタティック・プロパティに関する提案の詳細については、こちらをご覧ください。 こちら
関連
-
要素ツリー制御によるvueTreeテーブル
-
vueが定義するプライベートフィルタと基本的な使い方
-
[解決済み】JavaScriptエラー(Uncaught SyntaxError: Unexpected end of input)
-
[解決済み] 正規表現で変数を使うには?
-
[解決済み] JavaScriptで要素のクラスを変更するにはどうすればよいですか?
-
[解決済み] Node.jsを使うタイミングをどう判断するか?
-
[解決済み] Node.jsのmodule.exportsの目的と使い方を教えてください。
-
[解決済み] 指定された要素にクラスを追加するには?
-
[解決済み] POSTフォームのフィールドにアクセスする方法
-
[解決済み] アロー関数」と「ファンクション」は同じものですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
元のイベントが実行されなかった後に要素を追加するためのjQueryソリューション
-
Vueにシンプルなメモ帳機能を実装
-
vueはopenlayersを使用してスカイマップとガオードマップをロードする
-
vueの補間表現とv-textディレクティブの違いについて
-
Vueのクラススタイルの使い方の詳細
-
[解決済み】SyntaxError: JSONの位置1に予期しないトークンoがある。
-
[解決済み] 期待される代入または関数呼び出し: 未使用式なし ReactJS
-
[解決済み] Web API エラー - このリクエストはブロックされました; コンテンツは HTTPS で提供されなければなりません
-
[解決済み】 env: node: macにそのようなファイルやディレクトリはありません
-
nodejs unhandledPromiseRejectionWarning メッセージ