2017-08-28 2 views
0

私は材料UIテーブルコンポーネントを持っており、チェックアウトボタンを追加しました。 すべては、私が理解しない2つのことを除いて、正常に動作します:React - onClickは "this"を失いました

onClickhandleCheckout()機能を初期化するとき、なぜhandleRowSelection()と​​も同様に解雇されましたか?

最も重要なの

onClickhandleCheckout()、それは損失thisの文脈を、呼び出し、this.state.selected is []ことを私に示しています。ここで

export default class PredictionsTable extends Component { 

constructor(props) { 
    super(props); 

    this.state = { 
     selected: [], 
     tableData: [], 
     checkout: false 
    } 
} 


componentWillMount(){ 
    axios.get('/dashboard') 
     .then((response) => { 
      this.setState({ 
       tableData: response.data, 
      }); 
     }) 
     .catch((error)=> { 
      console.log(error); 
     }); 
} 

isSelected = (index) => { 
    return this.state.selected.indexOf(index) !== -1; 
}; 

handleCheckout = (event) => { 

は、「これは」失われ、スーパーは();,も方法結合した後、それはコンストラクタでは、選択し

console.log(this.state.selected); 
}; 

handleRowSelection = (selectedRows) => { 
    this.setState({ 
      selected: selectedRows, 
     },function(){ 
    }); 
}; 


render() { 
    return (
     <div className="table"> 
      <RaisedButton label="Reveal my Forecasts" onClick={this.handleCheckout} 
          labelStyle={{color: greenA700}} 
          buttonStyle={{borderColor: greenA700}}/> 
      <Table 
       height={"300px"} 
       fixedHeader={true} 
       fixedFooter={false} 
       multiSelectable={true} 
       onRowSelection={this.handleRowSelection} 
      > 
       <TableHeader 
        displaySelectAll={true} 
        adjustForCheckbox={true} 
        enableSelectAll={false} 
       > 
        <TableRow style={{background: '#e9eaea'}}> 
         <TableHeaderColumn colSpan="6" style={{textAlign: 'center' , paddingRight: "90px"}}> 
         </TableHeaderColumn> 
        </TableRow> 
        <TableRow> 
         <TableHeaderColumn tooltip="The forecast coin name">Altcoin Name</TableHeaderColumn> 
         <TableHeaderColumn tooltip="The value of the coin according to forecast time">Current 
          Value</TableHeaderColumn> 
         <TableHeaderColumn tooltip="Upper limit of investment">Profit Sell Order</TableHeaderColumn> 
         <TableHeaderColumn tooltip="Lower limit of investment">Loss Sell Order</TableHeaderColumn> 
         <TableHeaderColumn tooltip="Date and time the forecast was generated">Date and 
          time</TableHeaderColumn> 
         <TableHeaderColumn 
          tooltip="Share information about the forecast">Comments</TableHeaderColumn> 
        </TableRow> 
       </TableHeader> 
       <TableBody 
        showRowHover={true} 
       > 
        {this.state.tableData.map((row, index) => (
         <TableRow key={index} selected={this.isSelected(index)}> 
          <TableRowColumn>{row.coin_name}</TableRowColumn> 
          <TableRowColumn>{row.coin_value}</TableRowColumn> 
          <TableRowColumn style={{paddingLeft: 50}}>{row.profitSellOrder}</TableRowColumn> 
          <TableRowColumn style={{paddingLeft: 50}}>{row.lossSellOrder}</TableRowColumn> 
          <TableRowColumn>{row.ptime}</TableRowColumn> 

          //comments 
          <TableRowColumn>{row.lossSellOrder}</TableRowColumn> 
         </TableRow> 
        ))} 
       </TableBody> 
      </Table> 
     </div> 
    ) 
} 
} 
+0

あなたのやり方に関するシナリオを説明できますか? –

+0

テーブルコンポーネントには、チェックボックスと、チェックボックスがマークされるたびにhandleRowSelection()を起動する属性 "onRowSelection"があります。ハンドラは、選択された状態配列を更新します。ユーザーがチェックアウトボタンを押しても成功しなかった場合、選択したすべてのチェックボックスを取得しようとしています。 – ori1212

+0

これは、関数が正しく動作するはずのものです。 –

答えて

2

の更新された状態を示していない。

this.handleCheckout = this.handleCheckout.bind(this); 
+0

この提案は問題を解決しません:/私は既に矢印機能でこれを実装しました。 – ori1212

+0

これは@ toni-michel-caubetに行くための適切な方法です。 – Kejt

+0

@Kejt私は精巧な文章(理由)を繰り返さないでください。haha、とにかく、感謝 –

関連する問題