2016-09-27 3 views
0

私はonClickイベントをListItemに設定しました。次に、クリックされたリスト項目のIDと名前の値を渡すために呼び出されるメソッドに対して.bindが呼び出されます。onClickイベントバインドでパラメータを渡す方法は?

次のSO questionは、バインドを使用することを推奨していますが、ListItemにonCLickイベントを追加すると、リストバインドが中断されるようです。

クリックイベントを追加する前に、asset.nameへのリストスパンバインディングが正常に動作していて、リストに値が設定されています。

また、パラメータを指定しないでonClick={this._onAssetSelected()を試しても、クリックイベントは機能しません。

質問:

がどのようにJSXでonClickイベントバインドでパラメータを渡すことができますか?

リストの定義:クリックイベントから呼び出さ

   <List selectable={true} selected={0}> 
       { 

        this.state.data.map(function (asset) { 
         return (
          <ListItem justify="between" onClick={this._onAssetSelected.bind(this, asset.name, asset.id)} > 
           <span>{asset.name}</span> 
          </ListItem> 
         ); 
        }) 

       } 
       </List> 

方法:

_onAssetSelected(assetName, assetID) { 

    console.log(assetName); 
    console.log(assetID);  


    } 

答えて

2

あなたはこれを行うことができます。コールバックとしてanonymous関数を定義します。この関数では、パラメータを使用してメソッドを呼び出します。ホップは助ける!

+0

通常のクロージャを使用する方法があります。また、特定のプロパティではなく、完全なアセットオブジェクトを渡します。 – gor181

+0

私は上記のように無名関数を定義しました。開発ツールのコンソールは 'Uncaught TypeError:undefinedの_onAssetSelected 'プロパティを読み取れません。このメソッドがクラスで定義されていることがわかります。それとも私はここに何か他のものを逃している? –

+0

レンダリングで 'return'の前に' var _this = this'を追加し、マップの中で '_this._onAssetSelected'を使うべきです。 –

関連する問題