2016-12-23 5 views
-3

を避けたいlet that = this;汚れているようですので、それは?とにかく.bind(this)を使用することはできますか?Javascript(反応するネイティブ):回避する方法=これですか?

マイ現在のコード:事前に

// ... 
componentDidMount() { 
    let that = this; // <- how to avoid this line? 
    this.props.myService.listensTo('action', (data) => { 
     that.handleData(data); 
    }); 
} 

handleData(data) { 
    // handle data 
} 
// ... 

ありがとう!

+3

あなたは 'this.props.myService.listensTo( 'action'、this.handleData.bind(this));'を試したことがありますか? – martinarroyo

+4

Javascriptの矢印機能で 'that'トリックは必要ありません。 –

+0

矢印機能を使用すると、Reactはこれを既にバインドしています。 – Jecoms

答えて

4

は、基本的な機能はこれで助けて反応-ネイティブdoesntの以来になる矢印あなたはこのような関数だ定義することができますブラウザの互換性に対処する必要があります:あなたは今まで.bindする必要はありません

handleData = (data) => { 
    this.setState({ data }); 
} 

かあなたがこれを使うなら、これ=これ。

+1

また、componentDidMountの場合は、矢印機能を使用しているため、これを行う必要はありませんでした。 –

1

thisはすでに使用している矢印機能のために既にバインドされています。

// ... 
componentDidMount() { 
    this.props.myService.listensTo(
     'action', 
     (data) => this.handleData(data) 
    ); 
} 

handleData(data) { 
    // handle data 
} 
// ... 
関連する問題