我一直在与 ES6 斗争,试图提出一个非常简单的操作。我想从以下三个网站之一调用比特币的 JSON API 数据:
所有三个站点 API 端点都直奔我想要的价格,我认为这可能是问题所在。没有数据数组,只有具体价格。在我上面使用#3 的示例中,唯一的对象是“USD”。话虽如此,我认为我把这个过程想得太多了,因为我用更多的数据和数据数组进入了 API —— 我已经使用 ReactJS 完成了。
试图到达在 React DOM Inspector 中显示为“状态”的单个端点,并显示为“USD”并获取正确的价格,即使 ReactJS 正在查看并捕获它,我也无法获得在页面上呈现的价格.
我的代码:
var BitcoinApp = React.createClass({
getInitialState: function() {
return {
"USD": []
}
},
componentDidMount: function() {
var th = this;
this.serverRequest =
axios.get(this.props.source)
.then(function(result) {
th.setState({
USD: result.data.USD
});
})
},
componentWillUnmount: function() {
this.serverRequest.abort();
},
render: function() {
return (
<span>
{this.state.USD.map(function(Data) {
return (
<div key={Data.USD} className="testbtc">
<p>{Data.USD}</p>
</div>
);
})}
</span>
)
}
});
ReactDOM.render(<BitcoinApp source="https://min-api.cryptocompare.com/data/price?fsym=BTC&tsyms=USD&e=Coinbase" />, document.querySelector("#btcPrice"));
我要提一下,我对此进行了大量研究,并找到了很多答案——全都不同!每个人都知道 ReactJS 文档已经严重过时,因此至少很难说用 ReactJS 找到正确的路径。另外,我正在使用“axios”来“获取”API 数据,因为我已经读到“获取”尚未得到全球支持?2017年还是这样吗?
使用上述方法,我可以在 Inspector 中看到这一点:
但是当我转到检查员的“控制台”部分时,我被告知“this.state.USD.map 不是函数”。
我觉得我正处于解决这个任务的风口浪尖上,但我认为我在 Promise 的映射上有问题。
问题是:
th.setState({
USD: result.data.USD
});
正在设置不可迭代的对象。我的意思是这this.state.USD.map is not a function
意味着 USD 不是数组(您可以在控制台中看到这一点)。
试试这个,看看会发生什么:
th.setState({
USD: [result.data.USD]
});
然而,你写道:
没有数据数组,只有具体价格。
那么我认为最好的解决方案是只更改渲染方法和初始状态:
render: function() {
return (
<span>
<div className="testbtc">
<p>{this.state.USD}</p>
</div>
</span>
)
}
getInitialState: function() {
return {
"USD": "",
}
},
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句