Javascript 这是组件内部未定义的内容
我在用react native做加密股票代码 在加密股票代码中,我使用Redux来管理状态。以下是相关代码:Javascript 这是组件内部未定义的内容,javascript,reactjs,react-native,websocket,redux,Javascript,Reactjs,React Native,Websocket,Redux,我在用react native做加密股票代码 在加密股票代码中,我使用Redux来管理状态。以下是相关代码: class cryptoTicker extends Component { componentWillMount() { this.props.fetchCoin() } //Socket.io componentWillUpdate() { var socket = openSocket('https://coincap.io'); va
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"}
/>
)
})
类cryptoTicker扩展组件{
组件willmount(){
this.props.fetchCoin()
}
//Socket.io
componentWillUpdate(){
var socket=openSocket('https://coincap.io');
var updateCoinData=this.props.cryptoLoaded;
socket.on('trades',(tradeMsg)=>{
for(设i=0;i{
控制台日志(el)
返回(
)
})
这里this.props.cryptoLoaded;
来自redux
在这段代码中,在componentWillUpdated()中,它抛出一个错误,指出(在这里的某个地方)console.log(“这是更新数据”,updateCoinData[0][“short”])
它是未定义的
由于ComponentWillUpdate()
在渲染之后出现,我猜它已经加载了所有数据(渲染时工作正常)
所以有两个问题,我做错了什么?每次我做this.props.cryptoLoaded
,redux都会获取数据吗
[更新:相同->
组件的Github存储库将更新(道具){
组件将装载
和组件将更新
均已弃用(),并将在未来版本的react中删除。请尝试使用componentDidMount
和componentDidUpdate
,看看这是否解决了您的问题。@kingdaro在react 17中删除了它们?我使用的是react 16,所以我想这不应该是问题所在?@zerkms为什么我们需要在辩论中发送道具?无论如何,我尝试了,但同样的错误r、 我已经用我的github存储库更新了这篇文章。如果您或任何人能够找到我可能在那里做错的地方:)很抱歉,我应该提到componentdiddupdate
在渲染之后而不是之前更新,这可能是问题所在,但可能不是。在尝试从其获取属性之前,您可能只需要检查updatecondata[0]
是否存在