为了账号安全,请及时绑定邮箱和手机立即绑定

无法读取函数中定义的状态值

无法读取函数中定义的状态值

宝慕林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 关注
  • 144 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号