2016-07-03 7 views
2

はここに私のReact.jsコンポーネント定義です。ES6:コンストラクタは矢印関数として宣言できませんか?</p> <pre><code>class ExampleComponent1 extends React.Component { constructor() { super(); } } </code></pre> <p>のWebPACKこのバベルローダーで、すべてが正常になります:

class ExampleComponent1 extends React.Component { 
    constructor =() => { 
     super(); 
    } 
} 

WebPACKのビルドが失敗しました:これは、コンストラクタは矢印関数として宣言することはできませんなぜ起こったか、私は知りません

Module build failed: SyntaxError:....: 'super' outside of function or class (8:4)

しかし、私は、関数矢印constructor宣言を変更しますか?

+4

あなたはES6の矢印関数として*いかなる* 'class'メソッドを宣言することはできません。 WTHあなたはやろうとしていますか?クラス本体内の代入は構文エラーです。 – Bergi

+1

あなたはこの変身が何を期待していますか?矢印関数( 'new 'で呼び出すことはできません)はコンストラクタとして動作します(' new'なしでは呼び出せません)? – Bergi

+0

in arrow function、 'super'(または' this')は外部のレキシカルスコープチェーンを参照します。通常の機能で矢印機能を使用しない限り、それは仕様に従って動作しません。これがあなたがこのエラーを見ている主な理由です。 –

答えて

0

ES6では、矢印を使用して関数を作成することはできますが、プロシージャ関数またはラムダ関数の場合にのみ可能です。クラス宣言の中へ

は、あなたが唯一の標準ES6構文を使用することを許可されています。

class ExampleComponent1 extends React.Component { 
    constructor() { 
     super(); 
    } 
} 
+0

矢印機能は決して宣言ではありません – Bergi

+0

はい、投稿を編集します – ClementNerma

関連する問題

 関連する問題