Reactjs 二取一法

Reactjs 二取一法,reactjs,dictionary,get,axios,Reactjs,Dictionary,Get,Axios,我有两个单独的axios get方法,它们将响应数据映射到单独的数据对象。然后我在render中映射数据。我想将两个axios中的数据放在一个对象中,以便在渲染中只映射一个对象。我怎么能这么做 两个get函数之一 getData() { axios .get("http://localhost/GetAll?", { params: { rok: this.state.rok, idUchwaly: "1" }, headers: { Authorizatio

我有两个单独的axios get方法,它们将响应数据映射到单独的数据对象。然后我在render中映射数据。我想将两个axios中的数据放在一个对象中,以便在渲染中只映射一个对象。我怎么能这么做

两个get函数之一

getData() {
  axios
    .get("http://localhost/GetAll?", {
      params: { rok: this.state.rok, idUchwaly: "1" },
      headers: { Authorization: "Bearer " + this.state.token }
    })
    .then(response =>
      response.data.map(data2 => ({
        IDA: `${data2.idZadania}`,
        idWersji: `${data2.idWersji}`,
        Dzial: `${data2.dzial}`
      }))
    )
    .then(data2 => {
      if (data2 == "") {
      } else {
        this.setState({ data2, isLoadingdane: true });
      }
    })
    .catch(error => this.setState({ error }));
}
然后我将数据映射到一个表中

{this.state.isLoadingdane ? (
  data2.map(user2 => {
    const { IDA, idWersji, Dział } = user2;
    return (
      <tr id={IDA}>
        <td>
          <p>{idWersji}</p>
        </td>
        <td>
          <p>{Dzial}</p>
        </td>
      </tr>
    );
  })
) : (
  <tr>
    <td colSpan="3">
      <center>
        <p>Brak</p>
      </center>
    </td>
  </tr>
)}
{this.state.isLoadingdane(
data2.map(user2=>{
const{IDA,idWersji,Dział}=user2;
返回(
{idWersji}

{Dzial}

); }) ) : ( 吹牛

)}
我想要一个表,我可以把两个get函数的值都放在其中

getData() {
  axios
    .get("http://localhost/GetAll?", {
      params: { rok: this.state.rok, idUchwaly: "1" },
      headers: { Authorization: "Bearer " + this.state.token }
    })
    .then(response =>
      response.data.map(data2 => ({
        IDA: `${data2.idZadania}`,
        idWersji: `${data2.idWersji}`,
        Dzial: `${data2.dzial}`
      }))
    )
    .then(data2 => {
      if (data2 == "") {
      } else {
        this.setState({ data2, isLoadingdane: true });
      }
    })
    .catch(error => this.setState({ error }));
}

类似这样:{value from getData}{value from getData2}

您可以返回承诺并等待两个请求完成,然后将两个数组中的对象合并到一个数组中,而不是直接将对axios请求的响应置于状态

示例

class App extends React.Component {
  componentDidMount() {
    Promise.all([this.getData(), this.getData2]).then(([data1, data2]) => {
      this.setState({
        data2: data1.map((item, index) => ({ ...item, ...data2[index] })),
        isLoadingdane: true
      });
    });
  }

  getData = () => {
    return axios
      .get("http://localhost/GetAll?", {
        params: { rok: this.state.rok, idUchwaly: "1" },
        headers: { Authorization: "Bearer " + this.state.token }
      })
      .then(response =>
        response.data.map(data2 => ({
          IDA: `${data2.idZadania}`,
          idWersji: `${data2.idWersji}`,
          Dzial: `${data2.dzial}`
        }))
      );
  };

  getData2 = () => {
    return axios.get(/* ... */);
    // ...
  };

  render() {
    // ...
  }
}

您可以返回承诺并等待两个请求完成,然后将两个数组中的对象合并到一个数组中,而不是直接将对axios请求的响应置于状态

示例

class App extends React.Component {
  componentDidMount() {
    Promise.all([this.getData(), this.getData2]).then(([data1, data2]) => {
      this.setState({
        data2: data1.map((item, index) => ({ ...item, ...data2[index] })),
        isLoadingdane: true
      });
    });
  }

  getData = () => {
    return axios
      .get("http://localhost/GetAll?", {
        params: { rok: this.state.rok, idUchwaly: "1" },
        headers: { Authorization: "Bearer " + this.state.token }
      })
      .then(response =>
        response.data.map(data2 => ({
          IDA: `${data2.idZadania}`,
          idWersji: `${data2.idWersji}`,
          Dzial: `${data2.dzial}`
        }))
      );
  };

  getData2 = () => {
    return axios.get(/* ... */);
    // ...
  };

  render() {
    // ...
  }
}

Bartek,你需要像这样映射结果:

const first=[{
x:‘x’,
y:‘y’,
}];
常数秒=[{
x:‘x’,
z:‘z’,
}];
constall=first.map(o=>({…o,…second.find(f=>f.x==o.x)});

控制台日志(全部)Bartek,您需要这样映射结果:

const first=[{
x:‘x’,
y:‘y’,
}];
常数秒=[{
x:‘x’,
z:‘z’,
}];
constall=first.map(o=>({…o,…second.find(f=>f.x==o.x)});

控制台日志(全部)
[…data1,…data2]。映射(/*…*/
?它不起作用。它只是映射第一个数据,然后映射下面的第二个数据。
[…data1,…data2]。映射(/*…*/
?它不起作用。它只是映射了第一个数据,然后映射了下面的第二个数据。我看到了一个小问题。例如,当一个json有10条记录,而第二个json有6条记录时,这些记录就不合适了。我如何添加idZadania的比较以将值放入右侧的表中place@BartekMichułka使问题发生了巨大变化,在回答问题后,改变它不是一个好的做法。如果你想不出来,考虑在一个新的问题中创建一个问题,有人会帮助你。现在我看到了一个小问题。例如,一个JSON有10个记录,第二个有6个记录,记录不适合。我怎么可以添加一个IDZADANIa的比较来放置一个VALU?e在右边的桌子上place@BartekMichuKa会非常彻底地改变这个问题,在回答问题之后改变问题不是好的做法。如果你想不出来的话,考虑在一个新的问题中提出一个问题,有人会帮助你。