我刚开始通过汇总来自不同部分和在线课程的一些代码来弄清React。
我正在使用React,Next和Axios从加密货币服务器获取API。
我面临的主要问题是:
我的代码如下:
class MainIndex extends Component {
static async getInitialProps(props) {
// setup - empty array and list of coins
const coinList = ["NEO", "ETH", "BTC"];
const numCoins = coinList.length;
const coinObjects = [];
const linksArr = [];
const isServer = typeof window === "undefined";
// API GET
const baseUrl = "https://min-api.cryptocompare.com/data/histohour?";
for (let coinName of coinList) {
linksArr.push(
baseUrl.concat("fsym=", coinName, "&tsym=", "USD", "&limit=", "3")
);
}
const getObj = async linksArr => {
try {
let res = await axios.all(linksArr.map(l => axios.get(l)));
for (let i = 0; i < linksArr.length; i++) {
coinObjects[coinList[i]] = res[i].data.Data;
}
} catch (err) {
console.error(err);
}
};
await getObj(linksArr);
console.log(coinObjects);
// Return updated arrays
if (isServer) {
return { coinObjects, numCoins, linksArr };
} else {
return {};
}
}
render() {
return (
<Layout>
<h2>
CoinObject has {this.props.coinObjects.length} coins
// Returns 0
<br />
LinksArr has {this.props.linksArr.length} links
// Returns 3
</h2>
</Layout>
);
}
}
有人可以帮帮我吗?我已经用尽所有谷歌搜索,Stackoverflow发布和编码我能找到的朋友(只有1)。我无法弄清楚出了什么问题,我希望这不是一个愚蠢的问题,因为我一直在调整和改变事情,但还没有弄明白什么是错的。
答案 0 :(得分:0)
此处coinObject
设置为数组:
const coinObjects = [];
但后来被视为对象:
coinObjects[coinList[i]] = res[i].data.Data;
这意味着你想要像这样添加到数组中:
for (let i = 0; i < linksArr.length; i++) {
let data = res[i].data.Data;
let name = coinList[i];
coinObjects.push({ name: name, data: data });
}