我试图在React中过滤掉外部API(CoinMarketCap)中的数据。
我只想要一组特定代码的数据,但经过多次尝试后,我似乎无法使其正常工作。我觉得这应该是一个简单的解决方案,但似乎无法弄明白。
getData = () => {
const tickers = ["btc", "xrp", "eth", "ltc", "bch", "etc", "str", "xmr", "nxt", "zec", "rep", "dash"];
fetch(`https://api.coinmarketcap.com/v1/ticker`)
.then(res => res.json())
.then(data => data.filter(d => tickers.includes(d.symbol)))
.then(results => console.log(results)
)
但它已经注销了一个空数组。有什么想法吗?
答案 0 :(得分:1)
每个then()
都需要Promise
或任何可用的功能。问题是Array.prototype.filter()
不是承诺而不是解决任何问题(它不是异步函数)。你应该这样写:
getData = () => {
const tickers = ["btc", "xrp", "eth", "ltc", "bch", "etc", "str", "xmr", "nxt", "zec", "rep", "dash"];
fetch(`https://api.coinmarketcap.com/v1/ticker`)
.then(res => res.json())
.then(data => console.log(data.filter(d => tickers.includes(d.symbol))))
)
答案 1 :(得分:0)
如果您从fetch获取数据,请将toLowerCase()添加到d.symbol
tickers.include(d.symbol.toLowerCase()
答案 2 :(得分:0)
原来这是一个CORS问题。我不得不将fetch移动到我的后端并从REACT组件调用。现在工作正常。感谢。