reactjs - React - 如何为不同的 .map 数据数组设置状态?
问题描述
我正在构建我的应用程序。但是我有一个问题,不可能使用 setState 来使用 Axios 进行多个 API 调用。
我有 2 个不同的 URL,一个用于香水,一个用于化妆品。
当我加载到香水数组时,第一个曾经工作过。
当我尝试对化妆品使用另一个 API 调用时,它说 Fragrances 现在不是数组。
如何遍历多个不同的 API“类别”以及如何为每个数组(数据)设置状态?我在这里做错了什么?
其次是我的代码。
// Core React
import React, { Component } from 'react';
// Axios
import axios from 'axios';
// Constants
import { FRAGRANCES_URL, COSMETICS_URL } from 'constants/import';
// Components
import Fragrances from 'components/Fragrances/Fragrances';
import Cosmetics from 'components/Cosmetics/Cosmetics';
class App extends Component {
state = {
fragrances: [],
cosmetics: []
}
getCoffee() {
return new Promise(resolve => {
setTimeout(() => resolve('☕'), 1000); // it takes 1 seconds to make coffee
});
}
async showData() {
try {
const coffee = await this.getCoffee();
const fragranceData = axios(FRAGRANCES_URL);
const cosmeticsData = axios(COSMETICS_URL);
console.log(coffee); // ☕
await Promise.all([fragranceData, cosmeticsData]).then((data) => {
this.setState({
fragrances: data[0],
cosmetics: data[1]
})
})
} catch (e) {
console.error(e); //
}
}
componentDidMount() {
this.showData();
}
render() {
return (
<React.Fragment>
<Fragrances FragranceArray={this.state.fragrances} AppURL={FRAGRANCES_URL} />
<Cosmetics CosmeticsArray={this.state.cosmetics} AppURL={COSMETICS_URL} />
</React.Fragment>
)
}
}
export default App;
解决方案
推荐阅读
- javascript - 将 html 表的行转换为引导卡
- reporting-services - PBI 报表服务器 - 无需身份验证即可嵌入
- json - 将具有日期类型字段的 nifi 记录插入 PutMongo
- go - golang中关闭chan的问题如何解决
- nginx - m3u8 文件包含已清理的文件
- python - 如何解释这个等高线图?
- php - PHP MySql 结果作为 html 中的表
- javascript - 从本地html表单插入文档时,MongoDB不显示console.log
- reactjs - 使用 React 使复选框字段成为必填项
- python - 如何在 pandas 中使用 groupby 将行转换为列?