2017-06-02 4 views
0

私は自分のコードに構文エラーがあります。なぜそれが分からないのですか?それは私が参考文献を使ったやり方と関係がありますか?ここでReactコンポーネントクラスに構文エラーがあるのはなぜですか?

export default class ToggleMenu extends React.Component { 

    showRight: function() { 
    this.refs.right.show(); 
    } 

    render() { 
    return (
     <div> 
     <button onClick={this.showRight}>Show Left Menu!</button> 
     {/* 
     <Menu ref="right" alignment="right"> 
      <MenuItem hash="1">First</MenuItem> 
      <MenuItem hash="2">Second</MenuItem> 
      <MenuItem hash="3">Third</MenuItem> 
     </Menu> 
     */} 
     </div> 
    ); 
    } 
} 

は誤りです:

./src/components/ToggleMenu/ ToggleMenu.js Module build failed: SyntaxError: Unexpected token (13:14)

showRight: function() { 
    this.refs.right.show(); 
} 

答えて

1

あなたが混ざっオブジェクトリテラルとクラスを取得しています。あなたのコードはオブジェクトリテラルではなくクラスの中にあるので、renderのようにメソッド定義構文を使用する必要があります。クラスは、唯一の原型メソッドと(ECMAScriptの2015のような)コンストラクタを含めることができます。

showRight() { 
    this.refs.right.show(); 
} 

さもないと、それはlabelと関数の宣言として解釈されますが、functionキーワードで関数宣言は、このように、クラスのボディにすることはできません

:構文エラー: thisがグローバルスコープの this値を成分を意味していないように、また

showRight: //label 
function() { //function declaration, not valid in class body! 
    ... 
} 

は、あなたの方法にbind(this)に確認してください

constructor(props) { 
    super(props); 
    this.showRight = this.showRight.bind(this); 
} 

詳細については、class bodiesをMDNでご覧ください。あなたのshowRightに続いて

<Menu ref={right => this.right = right} alignment="right"> 


ref Sのご利用については、あなたが代わりにプレーンな文字列のコールバックを使用する必要がありますuの感謝の意味を作ること

this.right.hide(); 
+0

OKが、少なくともなぜ私は次のエラーを取得する:uncaught(約束)TypeError:未定義のプロパティ 'bind'を読み取ることができません – Alex

+0

@Alexあなたはコンストラクタに入れているのですか? – Li357

+0

'デフォルトのクラスをエクスポートするToggleMenuはReact.Componentを継承します{ コンストラクタ(小道具){ super(小道具); this.showRight = this.showRight.bind(this); } レンダリング(){ リターン(

{/* this.right = right} alignment="right"> First Second Third */}
)。 } } 'はい、私は何が間違っているのか教えてください。 – Alex

関連する問題