亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

無法讀取函數中定義的狀態值

無法讀取函數中定義的狀態值

寶慕林4294392 2022-09-16 21:43:13
我正在嘗試從API中獲取一些數據,并將其其中一個數組存儲在狀態內并在其中訪問它!但是當我嘗試使用上述狀態值時,我沒有得到定義。componentWillMount()這是我的代碼:componentWillMount() {        this._fetchData()************************************        alert(this.state.openSellOffers)************************************    }    _fetchData = async () => {        let openSellOffersRes = await fetchOpenSellOffers()        for (let sellOffer of openSellOffersRes.orders) {            let sellObj = {                _id: sellOffer._id,                currencyValue: sellOffer.currencyValue,                unitPrice: sellOffer.unitPrice,                totalPrice: sellOffer.totalPrice,                type: 'sell'            }            this.setState({                openSellOffers: [...this.state.openSellOffers, sellObj]            })        }    }    constructor(props) {        super(props)        this.state = {            IRRBalance: 0,            BTCBalance: 0,            openBuyOffers: [],            openSellOffers: [],            closedBuyOffers: [],            closedSellOffers: []        }    }如您所見,我用于顯示狀態值。這就是我得到的未定義點,而不是API響應的確切值。alert()我該如何解決?
查看完整描述

1 回答

?
桃花長相依

TA貢獻1860條經驗 獲得超8個贊

基本上,setState() 是異步工作的。因此,您需要等待幾納秒才能獲得該值。您可以通過2種方式做到這一點。


1. 使用等待


componentWillMount() {

  await this._fetchData()

  alert(this.state.openSellOffers)

}


_fetchData = async () => {

  let openSellOffersRes = await fetchOpenSellOffers()

  for (let sellOffer of openSellOffersRes.orders) {

    let sellObj = {

      _id: sellOffer._id,

      currencyValue: sellOffer.currencyValue,

      unitPrice: sellOffer.unitPrice,

      totalPrice: sellOffer.totalPrice,

      type: 'sell'

    }


    this.setState({

      openSellOffers: [...this.state.openSellOffers, sellObj]

    })

  }

  return true;

}


**2.使用設置超時 **


componentWillMount() {

  this._fetchData()

  setTimeout(() => {

    alert(this.state.openSellOffers)

  }, 100)

}


_fetchData = async () => {

  let openSellOffersRes = await fetchOpenSellOffers()

  for (let sellOffer of openSellOffersRes.orders) {

    let sellObj = {

      _id: sellOffer._id,

      currencyValue: sellOffer.currencyValue,

      unitPrice: sellOffer.unitPrice,

      totalPrice: sellOffer.totalPrice,

      type: 'sell'

    }


    this.setState({

      openSellOffers: [...this.state.openSellOffers, sellObj]

    })

  }

}


查看完整回答
反對 回復 2022-09-16
  • 1 回答
  • 0 關注
  • 138 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號