【发布时间】:2020-07-10 03:20:43
【问题描述】:
我的状态中有一个伪对象。我已经能够通过几层访问,但是当我到达对象内部的数组时,我得到了未定义的错误。
更新:我如何将 lambdaReturnObject 传递给不允许我访问数组的状态有问题,使用 lambdaReturnObject.campaigns[0].campaignName 进行了测试,它有效。
handleSearch() {
//data to use to query backend
let campaignId = this.refs.campaignInput.value
let marketplace = this.refs.marketplaceInput.value
//using local copy of backend data, production should call backend fo this instead
let lambdaReturn = "{\"advertiser\":{\"advertiserId\":\"1\",\"enforcedBudget\":0.1},\"campaigns\":[{\"campaignID\":\"1\",\"campaignName\":\"fake\",\"createDate\":11111,\"creationDate\":1111,\"startDate\":1111,\"endDate\":1111,\"dailyBudget\":0.1,\"internal\":{\"budgetCurrencyCode\":\"USD\",\"inBudget\":true},\"enforcedBudget\":0.1,\"budgetCurrencyCode\":\"USD\",\"budgetPacingStrategy\":\"asp\",\"budgetType\":\"averageDaily\",\"status\":\"enables\",\"internalStatus\":\"enabled\"}],\"campaignID\":\"1\"}"
let lambdaReturnObject = JSON.parse(lambdaReturn)
this.setState({
apiData: lambdaReturnObject
})
}
当我尝试进入里面的数组时,我得到以下错误
<h3>Campaigns :{console.log(this.state.apiData.campaigns[0].campaignName)}</h3>
Cannot read property '0' of undefined
这意味着我以错误的方式访问它,但我查看了其他帖子 (Accessing Object inside Array),我认为这是正确的。虽然我肯定错了,否则我不会写这个。
【问题讨论】:
-
你能提供你的调用代码以从 api 获取吗?这听起来像是一个异步问题。
-
对 api 的提取只是一个我使用 JSON.parse 的字符串,我实际上并没有调用后端,但它会是相同的 JSONString,让我将它添加到问题中
-
鉴于您的代码,我不知道问题可能是什么。这一切看起来应该可以工作。我至少可以确认
campaigns[0]绝对是您访问campaigns数组中第一项的方式。 -
我打电话给
lambdaReturnObject.campaigns[0].campaignName,它成功了。所以我在设置状态时做错了apiData: lambdaReturnObject
标签: javascript arrays json