Свойство объекта JSON "неопределено" при динамическом достижении - PullRequest
0 голосов
/ 25 февраля 2019

Я импортирую 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: {…}}

Я хотел бы понять, почему это происходит, прежде чем использовать какой-то поворот, потому что я не нашел кого-то с такой же проблемой :) спасибо!

1 Ответ

0 голосов
/ 25 февраля 2019

Это должно решить проблему для вас

импортировать CharInfo из '../Configs/CharInfo.json'

Проблема заключается в том, что вы экспортируетеJSON в файле CharInfo.json по умолчанию.Что-то вроде:

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

Во время импорта вы импортировали как

`import * as CharInfo...`  

, который импортирует все, присутствующее в файле, в новую переменную CharInfo и присутствует экспорт по умолчанию jsonпо умолчанию внутри объекта CharInfo.

Итак, фактический json теперь доступен как CharInfo.default.

Если вы импортируете как import CharInfo from '../Configs/CharInfo.json', вы получите json внутри CharInfo, и CharInfo [this.ID] будет работать нормально.

Надеюсь, это поможет, вернемся к любым вопросам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...