我在React Native上做了一个加密货币报价器。
在那个加密货币中,我正在使用Redux来管理状态。以下是相关代码:
class cryptoTicker extends Component {
componentWillMount() {
this.props.fetchCoin()
}
//Socket.io
componentWillUpdate() {
var socket = openSocket('https://coincap.io');
var updateCoinData = this.props.cryptoLoaded;
socket.on('trades', (tradeMsg) => {
for (let i=0; i<100; i++) {
console.log(i)
console.log("this is Update data", updateCoinData[0]["short"])
console.log("this is socket data", tradeMsg.coin)
if ( updateCoinData[i]["short"] === tradeMsg.coin ) {
console.log("yolo")
}
}
})
}
render() {
//Update State from websocket
var CryptoData = this.props.cryptoLoaded;
let displayCrypto = CryptoData.map(el => {
console.log(el)
return (<CoinCard
key={el["long"]}
coinShortName = {el["short"]}
coinName = {el["long"]}
coinPrice = {el["price"].toFixed(2)}
marketCap = {el["mktcap"]}
percentChange = {el["perc"]}
coinImage = {"https://coincap.io/images/coins/" + el['long'] + ".png"}
/>
)
})
这里this.props.cryptoLoaded;
来自redux。
在这段代码中,在componentWillUpdated()内部,它引发一个错误,提示console.log("this is Update data", updateCoinData[0]["short"])
(未定义)。
由于ComponentWillUpdate()
是在渲染之后出现的,因此我猜测它已经加载了所有数据(渲染工作正常)。
有两个问题,我在这里做错了什么?每次执行this.props.cryptoLoaded
时redux都会获取数据吗?
[更新:] 相同的Github存储库-> https://github.com/irohitb/React-native-crpto-ticker