【问题标题】:How to specify a value of a child property [closed]如何指定子属性的值
【发布时间】:2019-09-10 23:38:29
【问题描述】:

环境是反应功能组件。使用 useState 钩子,我成功地从 API 调用中检索 JSON 对象并可以记录它。但是,我收到未定义的尝试记录子属性。

"data": {
  "id": 4876,
  "Number": "043-008",
  "Description": "On/Off Pull Chain Electrolier; Polished Brass",
  "Prod Cat": "Lamp Parts",
  "Mfg": "ADL",
  "Mfg Number": "D4110",
  "Warehouse": "2",
  "Warehouse Row": null,
  "Warehouse Shelf": null,
  "Color": "Polished Brass",
  "Stock Class": "W    ",
  "Unit of Measure": "      ",
  "Last Cost": 3.74
 }
}

console.log (data) 如上所示正常,但 data.id 未定义。

【问题讨论】:

  • 您能否至少包含产生错误的代码,重现您的问题的可执行代码沙箱会更好。
  • 如果console.log(data)记录了我们看到的内容,你需要使用console.log(data.data.id),因为data是变量名,还有一个叫做data的属性

标签: javascript reactjs


【解决方案1】:

我看到这可能发生的两种情况:首先,您有一个对象,其中包含属性data。那么data 的值就是一个以id 为属性的对象。因此,您需要以这种方式访问​​它:data.data.id。这可能会令人困惑,但第一个 data 实际上只是变量的名称,您可以为其分配任何名称。第二个取决于您的 JSON 对象。

第二个问题可能是您从 API 获取对象作为对象的字符串表示形式,而不是实际对象。尝试像这样将其解析为 JSON:

const parsedData = JSON.parse(data);
console.log(parsedData.data.id);

【讨论】:

  • 谢谢,你帮了我很多。该数据来自 MSSQL。该语句是 res.json({ data: result.recordset[0] });应该是 res.json(result.recordset[0]);
猜你喜欢
  • 1970-01-01
  • 2014-09-05
  • 1970-01-01
  • 2022-08-17
  • 2012-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-26
相关资源
最近更新 更多