如何在setState回调的回调中调用axios

问题描述 投票:0回答:1

我有两个异步调用如下。我尝试在this.setState的回调中包装axios调用,但它抛出语法错误,如, expected

      this.setState(prevState => ({ 
          condition: [...prevState.condition, { name: "readByGroup", operator: "IN  ", value: groups }]
        }))
      }

        this.props.getMetricsByContent(this.state.condition).then((data) => {
          this.setState({isLoader: false});
          if(data && Array.isArray(data) && data.length > 0){
            let csvContent = papa.unparse(data);
            this.download(csvContent, 'metrics.csv', 'text/csv;encoding:utf-8');
            this.setState({statusMsg: "File Downloaded successfully"})
          } else this.setState({statusMsg: "No records to download"})
        })

我尝试的内容如下:

this.setState(prevState => ({ 
      condition: [...prevState.condition, { name: "readByGroup", operator: "IN  ", value: groups }]

      this.props.getMetricsByContent(this.state.condition).then((data) => {
        this.setState({isLoader: false});
        if(data && Array.isArray(data) && data.length > 0){
          let csvContent = papa.unparse(data);
          this.download(csvContent, 'metrics.csv', 'text/csv;encoding:utf-8');
          this.setState({statusMsg: "File Downloaded successfully"})
        } else this.setState({statusMsg: "No records to download"})
      })
}))
javascript
1个回答
1
投票

我没有看到你在this.setState中运行回调函数的位置。

尝试:

   this.setState(prevState => ({ 
          condition: [...prevState.condition, { name: "readByGroup", operator: "IN  ", value: groups }]
    }),  () => {
     this.props.getMetricsByContent(this.state.condition).then((data) => {
            this.setState({isLoader: false});
            if(data && Array.isArray(data) && data.length > 0){
              let csvContent = papa.unparse(data);
              this.download(csvContent, 'metrics.csv', 'text/csv;encoding:utf-8');
              this.setState({statusMsg: "File Downloaded successfully"})
            } else this.setState({statusMsg: "No records to download"})
          }))
   }

关键是箭头作为setState的下一个参数。

https://reactjs.org/docs/react-component.html#setstate

© www.soinside.com 2019 - 2024. All rights reserved.