【问题标题】:Using fetch with react-excel-workbook使用 fetch 和 react-excel-workbook
【发布时间】:2018-04-26 15:37:17
【问题描述】:

我的问题是 Excel 导出在提取完成之前将数据导出到 Excel。

我想要实现的目标: 点击按钮时获取数据,然后在获取所有数据后,将数据导出到excel。 注意我不想在第一次渲染组件时获取数据。

这只是我的尝试之一:

class ExcelExport extends React.Component {
  getDataForExport = () => {
    get('/uri')
      .then((response) => response.items)
      .catch((error) => []);
  };

  render() {
    return (
      <Workbook element={<input type="button" value="Excel Export" />}>
        <Workbook.Sheet data={() => this.getDataForExport()} name="Sheet A">
        <Workbook.Column label="Foo" value="foo"/>        
        </Workbook.Sheet>      
      </Workbook>
    );
  }
}

感谢您的帮助。

【问题讨论】:

    标签: excel reactjs export


    【解决方案1】:

    解决此问题的一种可能方法是使用组件状态来存储您的数据。因此,让我们假设 getDataForExport 函数中的 get 调用在获取完成时返回数据(承诺已解决)。在 then() 调用中,您可以像这样将该数据分配给状态:

    class ExcelExport extends React.Component {
      constructor() {
        super();
        this.state = { data: null }
      }
    
      getDataForExport = () => {
        get('/uri')
          .then((response) => {
            this.setState({ data: response });
          })
          .catch((error) => []);
      };
    
      ...
    }
    

    然后在您的渲染函数中,您可以添加一个触发数据获取的按钮,然后检查 this.state.data 是否为 null 或是否包含某些数据并根据此渲染不同的内容:

    render() {
        return (
          <Workbook element={<input type="button" value="Excel Export" onClick={this.getDataForExport.bind(this)} />}>
          {this.state.data || 
            <Workbook.Sheet data={this.state.data} name="Sheet A">
              <Workbook.Column label="Foo" value="foo"/>        
            </Workbook.Sheet>}
          </Workbook>
        );
      }
    

    希望这会有所帮助。

    【讨论】:

    • 我也试过这个,但是在获取数据后我必须以某种方式触发工作簿的 的假点击事件。原因是我认为 Workbook 的 上的点击事件会触发 excel 导出。
    • 很遗憾没有。但我认为问题在于 react-excel-workbook npm 模块的 Workbook 会在您单击按钮时立即尝试导出其子项(Workbook.Sheet)。不过非常感谢您的建议
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-28
    • 2016-12-27
    • 2016-04-07
    • 2012-05-13
    相关资源
    最近更新 更多