React JS:单击下载按钮以JSON格式下载文件

时间:2019-02-06 15:26:36

标签: javascript reactjs

我要下载与该行有关的文件,并从该行的值中传递该值,甚至在我单击下载按钮之前,就已经创建并下载了该文件,我正在使用react-file-download包和filedownload方法同样,但无法做到。我需要有关如何解决此问题的信息:

class displayBlank {

handleDownload(col 1,col2)
{

    var data = "This is an example JSON";
    var fileDownload = require('react-file-download');
    fileDownload(data, 'filename.json');

}

render(){
                    <table >
                      <thead>
                        <tr role="row">
                          <th>COL 1</th>
                          <th>COL 2</th>
                          <th>COL 3</th>
                          <th>COL 4</th>
                          <th>COL 5</th>
                          <th>COL 6</th>
                          <th>COL 7</th>
                          <th>COL 8</th>
                          <th>COL 9</th>
                        </tr>
                      </thead>
                      <tbody>
                        {this.state.pageOfItems.map((item, i) => {
                          return (
                            <tr key={i}>
                              <td >{item.COL1}</td>
                              <td> {item.COL2}</td>
                              <td> {item.COL3}</td>  
                              <td> {item.COL4}</td>  
                              <td> {item.COL5}</td>
                              <td> {item.COL6}</td>
                              <td style={{color: 'white', fontWeight: 'bold', backgroundColor: item.COL 7 === 'VALUE' ? 'red' : 'green'}}>{item.COL7}</td>
                              <td >{item.COL 8 === 'VALUE1' ? (<div><Button bsStyle="primary" type="submit" bsSize="small" onClick={this.handleDownload(item.COL1,item.COL2)}>DOWNLOAD</Button></div>) : (<div></div>)}</td>
                            </tr>
                          );
                        })}


                      </tbody>
                    </table>
                    }
                    }

即使在单击下载按钮之前,文件也已下载,并且特定的行值未传递到handleDownload函数上。

1 个答案:

答案 0 :(得分:0)

onClick={() => this.handleDownload(item.COL 1,item.COL 2)}

您正在调用该函数,而应使用上面的回调。