我有一个 JSON 有效负载,其中包含连字符的键名,使用时我似乎无法访问this.props
我知道在 JS 中你无法访问:
data: {name-last: dave}
使用.
符号 iedata.name-last
不会工作,但data['name-last']
可以工作。
我遇到的问题是,在反应和使用时this.props.data['name-last']
总是返回未定义。
理想情况下,id 不需要更改有效负载(因为 id 必须即时修改它)无论如何要在道具中使用连字符的键名?
这是一个示例数据结构;
{
generatedTime: "2017-12-08T15:04:16.876Z",
audits: {
first-meaningful-paint: {
score: 85,
displayValue: "2,370 ms",
rawValue: 2369.9,
optimalValue: "< 1,600 ms",
extendedInfo: {
value: {}
},
scoringMode: "numeric",
name: "first-meaningful-paint",
category: "Performance",
description: "First meaningful paint",
helpText: "First meaningful paint measures when the primary content of a page is visible. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint)."
},
speed-index-metric: {
score: 86,
displayValue: "2,610",
rawValue: 2610,
optimalValue: "< 1,250",
extendedInfo: {},
scoringMode: "numeric",
name: "speed-index-metric",
category: "Performance",
description: "Perceptual Speed Index",
helpText: "Speed Index shows how quickly the contents of a page are visibly populated. [Learn more](https://developers.google.com/web/tools/lighthouse/audits/speed-index)."
}
}
}
以上全部存储在this.props
如何访问this.props.data['first-set-of-data']
我用这个电话:
this.props.service.hindi["speed-index-metric"].score
更新,所以我刚刚意识到这些数据无法立即获得。redux store 只用一个空白对象启动。audits
我试图访问的对象是通过异步请求拉入的。所以我试图访问第一次调用时不存在的道具,this.props
这就是应用程序在第一次运行时失败的原因。
如果第一次加载时数据不存在,是否有让道具优雅地失败?在获取数据后,我的初始状态是否需要匹配完整的结构化状态?