2017-06-01 4 views
0

ReactJSで、特定のAPIを呼び出してJSON配列で動作する単純なアプリケーションを構築しています。次に、配列の結果を表に取り込みます。私が今したいのは、テーブル内の任意の行をクリックし、それらの値を他のコンポーネントに渡すことです。私はonClickを使用して行情報を取得する方法が不思議です。テーブルの行をクリックして行情報を取得しようとしていますreactJS

ここに私のコードです。

class ParentComponent extends Component { 

constructor(props){ 
    super(props); 
    this.state = {data: []}; 
} 


componentDidMount() { 
    fetch('http://hostname:xxxx/yyyy/zzzz') 
    .then(function(response) { 
    return response.json(); 
    }) 
    .then(items=>this.setState({data: items})); 
} 

fetchAccountDetails() { 

} 

render(){ 
var newdata = this.state.data; 

     return (
      <table className="m-table"> 
       <thead> 
         <tr> 
          <th>AccountName</th> 
          <th>ContractValue</th> 
         </tr> 
        </thead> 
       <tbody> 
        { 
         newdata.map(function(account, index){ 
         return (
          <tr key={index} data-item={account} onClick={this.fetchAccountDetails()}> 
          <td data-title="Account">{account.accountname}</td> 
          <td data-title="Value">{account.negotiatedcontractvalue}</td> 
          </tr> 
          ) 
          } 
         ) 
        } 
       </tbody> 
       </table> 
      ); 
     } 
    } 

export default ParentComponent; 

答えて

1

は、状態要素のインデックスを渡しから取得したいそれを使用することができます

fetchAccountDetails (event) { 

Account:event.target.value 
this.getData(Account); 
} 

getData: function(var account) 
this.setState({ 
     state: account 
    }); 

を使用して値をフェッチ状態アレイ。また、マッピングする前に状態を別の変数にコピーする必要はありません。状態自体でそれを行うこともできます。

render(){ 

    return (
     <table className="m-table"> 
      <thead> 
        <tr> 
         <th>AccountName</th> 
         <th>ContractValue</th> 
        </tr> 
       </thead> 
      <tbody> 
       { 
        this.state.data.map((account, index) => { 
        return (
         <tr key={index} data-item={account} onClick={() => this.fetchAccountDetails(index)}> 
         <td data-title="Account">{account.accountname}</td> 
         <td data-title="Value">{account.negotiatedcontractvalue}</td> 
         </tr> 
         ) 
         } 
        ) 
       } 
      </tbody> 
      </table> 
     ); 
    } 
} 

fetchAccountDetails(index) { 
    var values = this.state.data[index]; 
    console.log(values); 
} 
+0

忘れました。行にonClickプロパティを追加すると、このエラーが発生します。 'TypeError:http:// localhost:8070/dist/index.js:Array.map(native)の2558:65で未定義のプロパティ 'fetchAccountDetails'を読み取れません。 –

+0

バインディングの問題である、マップの矢印機能を使用して、コードを更新しました –

+0

ありがとうございました。私はこれらの変更を加えました。今、私がページをリフレッシュすると、コンソールで、行をクリックせずにすべての値が出力されます。 'onClick'は動作していないようです。また、私は 'onClick'のfetchAccountDetailsを使用している間インデックスパラメータを追加しました –

0

今、あなたは状態のように設定してデータを持っている、あなたはどこでもあなたはヨーヨー

関連する問題