2016-03-29 14 views
2

私はReactJS(Mastering React)を学ぶ例を取り上げています。例を作り直している間、私はいくつかの声明で無意味であり、助けに感謝します。ReactJSのthis.method.bind(null、...)について理解していますか?

フィドル:Composing Components

まず

... 
//Why are we passing null in update.bind(...)? 
//Is null here equivalent to 'this'? 

<TextBox label='First Name' update={this.update.bind(null,'firstName')}></TextBox> 
... 

セカンド

Updateメソッドは、しかし、それが呼び出されたときに、キーと値(以下メソッド定義)

... 
    update: function(key, value) { 
      var newState = {}; 
      newState[key] = value; 
      this.setState(newState); 

      //this.setState({[k]:v}); 
     }, 
... 

を期待単一のパラメータで、正しいキーは、righで更新されます。 t値。

//Aren't we supposed to pass two parameters? 
this.props.update(this.refs.newText.value); 

答えて

2

this.update.bind(null,'firstName')そのコードの意味 - this.updatethisnullのために設定され、'firstName'として最初の引数を設定し、その後、あなたはを機能するように、この参照を呼び出すとき - 最初の引数は'firstName'になり、第二、あなたがすることによって設定することができます自分自身。、我々はこの

var fn = function (key, value) { 
 
    console.log(key); 
 
    console.log(value); 
 
}; 
 

 
var f = fn.bind(null, 'x'); 
 

 
f('y');

のようなあなたの例からコードを簡素化することができます
+1

うわー!すばらしい簡単な例。 – Bala

1

「バインド」は、javascriptで「カリン」パターンを実装する方法の例です。この場合、updateメソッドがラップされ、updateが呼び出されるたびにnullになり、 'firstName'が最初の引数(この場合はキー)になります。バインドと

私は何かが欠けていない限り、あなたはバインドにnullを置き換えない限り、更新メソッドが呼び出されたときに「この」の値が(、nullになります)(この、「firstNameの」)

関連する問題