【发布时间】:2021-04-01 19:25:26
【问题描述】:
我正在尝试在 React 中呈现一个 JSON 对象(可能是 javascript 对象,老实说不确定)。问题是我数据库中的数据为每个节点提供了一个随机名称,例如“-MXD0MSwDX8FN6qUw9H0”。我认为这没什么大不了的,但问题是我正在尝试访问该节点下的数据。如下图所示,我想将“一”“二”“三”和“四”的条目呈现为数据表的一部分。
[
{
"name": "State",
"value": [
{
"-MXD0MSwDX8FN6qUw9H0": {
"four": "1",
"one": "ABCDEF",
"three": "1",
"two": "ARCA"
},
"-MXD0MZbyi3zAodme7mL": {
"four": "2",
"one": "ABCDEF",
"three": "2",
"two": "ARCA"
},
"-MXD2m0143mUw6BSb5Jg": {
"four": "1",
"one": "ABCDEF",
"three": "1",
"two": "ARCA"
},
"-MXD2m5wE6OB8DTH6N3c": {
"four": "2",
"one": "ABCDEF",
"three": "2",
"two": "ARCA"
}
}
],
"subHooks": []
},
{
"name": "Effect",
"value": "ƒ () {}",
"subHooks": []
}
]
到目前为止,我已经尝试使用 [].concat(tabledData) 和 Array.of(tabledData) 将其转换为数组,但它似乎不起作用,所以我目前正在尝试使其与javascript 对象函数。这是我到目前为止的一个例子:
{Object.keys(Data).map( (key)=>{
return (
<div className="dataLine">
<div>{Data[key].one}</div>
<div>{Data[key].two}</div>
<div>{Data[key].three}</div>
<div>{Data[key].four}</div>
<div>{Data[key].five}</div>
</div>
)
})}
我相信我的错误是 Data(这是我的状态值)在 Data[key].one 中没有条目,因为子节点还不是一个,类似于“-MXD0MSwDX8FN6qUw9H0”。由于我无法预测这个随机字符串,所以我不确定如何在不知道名称的情况下访问此对象的子对象。
【问题讨论】:
-
我不确定我是否理解。如果您正在映射对象的键,那么您确实知道键,因为您已经映射了它们。
-
看起来不错,但我猜
Data不是您所期望的。如果Data是您发布的整个对象,那么您关注的嵌套对象就是Data[0].value[0]。 -
你的意思是一个JavaScript对象,如there is no such thing as a "JSON Object"。
-
当您通过其 JavaScript SDK 从 Firebase 获取数据时,
DataSnapshot上有一个forEach方法。您可以使用它以正确的顺序迭代子节点。 -
如果您无法解决问题,您能否 1) 将问题与 Firebase 完全分开,并向我们展示您共享的代码如何在您共享的 JSON 上运行? 2) 或向我们展示
Data是如何从数据库中读取的,以及它与您共享的 JSON 有何关系?
标签: javascript json reactjs firebase javascript-objects