繁体   English   中英

动态到达时,JSON 对象属性为“未定义”

[英]JSON object property is "undefined" when dynamically reached

我正在将 JSON 导入到我的 JS,但是在尝试使用obj [varWithPropName]访问其属性时遇到了一些问题。

但是,它在使用obj ["PropName"] 时有效

遵循一个简化的剪断,希望它有帮助!

import * as CharInfo from '../Configs/CharInfo.json';
(...)
this.ID = "Maya";

console.log("Maya" === this.ID); //true

console.log(typeof(CharInfo)); //object

console.log(CharInfo["Maya"]); //{configs: {…}, animations: {…}}

console.log(CharInfo[this.ID]); //undefined

这不是与“控制台”相关的问题,因为在 console.log 之外使用时,它会在运行时中断,

Uncaught TypeError: Cannot read property 'animations' of undefined

虽然它是这样工作的,

CharInfo.default[this.ID]; //{configs: {…}, animations: {…}}

我想在使用一些周转之前了解为什么会发生这种情况,因为我没有找到有同样问题的人:) 谢谢!

这应该为您解决问题

从 '../Configs/CharInfo.json' 导入 CharInfo

问题是您默认导出文件 CharInfo.json 中的 JSON。 就像是:

json = { /* your json */ };
export default json;

在导入时,您已经导入了

`import * as CharInfo...`  

它将文件中存在的所有内容导入到一个新变量 CharInfo 中,并且默认导出 json 作为默认值存在于 CharInfo 对象中。

因此,实际的 json 现在可以作为 CharInfo.default 使用。

如果您像import CharInfo from '../Configs/CharInfo.json'这样import CharInfo from '../Configs/CharInfo.json'您将在 CharInfo 中获得 json,而 CharInfo[this.ID] 将正常工作。

希望有帮助,如有问题请回复。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM