2017-03-20 9 views
0

私はスキルに反応し、これを行うことによって、私はこの甘いコードラインを見つけました。バインディング:誰かが私にこの権利を手伝うことができますか?

export default class SearchBar extends Component { 

    constructor(props) { 
    super(props); 
    this.state({term:''}); 

    this.onInputChange = this.onInputChange.bind(this); 
    } 

    onInputChange(event) { 
    this.setState({ term: event.target.value}); 
    } 
} 

ここでJSXの一部

render() { 
    return(<input 
    value={ this.state.term } 
    onChange={ this.onInputChange } 
    />) 
} 

は、あなたは私が本当にラインで何が起こっているのかを理解することができる場所、ソースを教えてくれたり、私を示して/助けてくださいことはできますか?

this.onInputChange = this.onInputChange.bind(this); 

それは私を混乱させます。あなたの助けてくれてありがとう。 種類について

+2

[React.jsとES6の可能な重複:コンストラクタで関数をバインドしない理由](http://stackoverflow.com/questions/31294494/react-js-and-es6-any-reason-notバインドするコンストラクタ内の関数) –

+0

これもチェック:http://stackoverflow.com/questions/38334062/why-do-you-need-to-bind-a-function-in- –

答えて

1

あなたはバインディングが必要な理由を理解するためにthisブログを通過できます。

この方法をバインドするには、stage-1 Babel presetをインストールし、矢印機能を使用することをお勧めします。矢印関数はを自動的にバインドします。したがって、bind()関数を使用する必要はありません。

もっと分かりやすいように、thisブログを読むことができます。矢印機能付

あなたのコードは次のようになります。

export default class SearchBar extends Component { 

    constructor(props) { 
    super(props); 
    this.state({term:''}); 
    } 

    onInputChange = (event) => { 
    this.setState({ term: event.target.value}); 
    } 
} 

render() { 
    return(
    <input 
     value={this.state.term} 
     onChange={this.onInputChange} 
    /> 
) 
} 

今、あなたは、バインド文の新しい機能が追加されるたびに追加する必要はありません。

+0

あなたはこれがOPの質問にどのように答えるか説明できますか?彼はその行の意味を求めています:)私はコンストラクタのバインディングメソッドがより効率的だと思います。 –

+0

バインディング方法はより効率的ですか?バインディングメソッドと矢印関数の両方で同じことが行われます。バインド関数では、新しい関数が必要になるたびに追加の文を追加する必要があります。我々は、矢印の機能を持つ追加の文は必要ありません。だからコードは少しきれいになります:) –

+1

私はコメントに貼り付けてリンクを確認:)これは元のquesに答える方法をもう一つは? –

関連する問題