2016-05-19 13 views
1

私はthis codeに就職しようとしています。ES6 Reactプロパティが定義されていません

/* 
* A simple React component 
*/ 
class Application extends React.Component { 
    num = 42; 
    render() { 
     return (
     <button onClick={this.show}>show</button> 
    ); 
    } 
    componentDidMount() { 
     console.log(this.num); 
    } 
    show() { 
     console.log(this.num); 
    } 
} 

/* 
* Render the above component into the div#app 
*/ 
React.render(<Application />, document.getElementById('app')); 

問題は、プロパティの値を取得するためにボタンをクリックすると、定義されていません。興味深い部分はComponentDidMount()関数がnum値にアクセスできることです。

私はshow()関数が異なるコンテキストを持っていると思うので、numthisというキーワードで参照することはできません。私はコンストラクタのnum値をバインドしようとしましたが、どちらも機能しませんでしたので削除しました。

ボタンをクリックしてnumの値を取得するにはどうすればよいですか?

+0

関連:受け入れ答えは悪い習慣がこれを見提供[?コールバックの内側に正しい 'this' /コンテキストにアクセスする方法](http://stackoverflow.com/q/20279484/218196) –

答えて

1

あなたは矢印機能

<button onClick={() => this.show()}>show</button> 

または正しいnum

参考得るためにthis

<button onClick={this.show.bind(this)}>show</button> 

の値をバインドするいずれかを使用することができます

アロー機能:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions

Function.bind:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind

0

あなたは正しいです - show機能は、異なるコンテキストを持っています。

あなたはonClickコールバックにコンテキストを結合することによってこの問題を解決解決することができます:

<button onClick={this.show.bind(this)}>show</button>

関連する問題