我可以从进行 API 调用的数据库中获取数据,然后将其传递给另一个进行另一个 API 调用的函数吗

Can I get the data from database that makes an API call then pass it to another function that makes an another API call

在反应中,我想从数据库中获取数据。 我试图使用 getCoor() 从数据库中获取数据并放入构造函数方法中。 我定义了变量 私人data:any=[]; 并定义了一个状态,this.state={data:[]}

我正在尝试

问题:来自 getCoor 的数据没有存储在我的变量中。

  componentDidMount() {
    this.defaultCoor();
    const Markers = async () => {
      await this.getCoor(); // this.data=json;
      await this.addGoogleMapScript();//do something with this.data 

    }
    Markers();
}

this.data 为空。 我正在等待 getCoor 完成 API 调用, 获取数据并传递给 addGoogleMapscript, 这在 React 中可能吗?

解决方案

private getCoor() {
    const qurl = `/_api/web/lists/getbytitle('${this.props.list}')/items?$select=*&$orderby=Created asc`;

    const opt: ISPHttpClientOptions = {
      headers: { "Content-Type": "application/json;odata=verbose" }
    };

    return this.props.spHttpClient
      .get(
        this.props.context.pageContext.web.absoluteUrl + qurl,
        SPHttpClient.configurations.v1,
        opt
      )
      .then((response: SPHttpClientResponse) => {
        return response.json().then((json: any) => {
          this.setState({ data: json.value });
          return (this.data = json); 
        });
      });
  }

这个.data:any=[];在基于 class 的 React 组件中的构造函数方法之后定义 在API函数中添加Return和returnthis.data:)

您正在获取数据但未将其分配给变量。为此,您的 Markers 函数应如下所示。

componentDidMount() {
  this.defaultCoor();
  const Markers = async () => {
    const data = await this.getCoor();  // this.data=json;
    await this.addGoogleMapScript(data);  //do something with this.data 
  }
  Markers();
}