Reactjs Доступ к методу класса вне класса, но в том же файле - PullRequest
0 голосов
/ 20 февраля 2020

У меня есть этот код, и я хочу получить доступ к методу класса вне класса в массиве AssetsMap.

import OrientationEnum from "../enums/orientation_enum";
import * as gameconfig from "../gameconfig";
import GA from "./analytics";
import * as Raven from "raven-js";
import {getQueryString} from "./tools";

const AssetsMap = new Map([
    [AssetsEnum.background, 'common/background.jpg']
]);

class AssetsManager {

    constructor...

    getConfigValue(key, defaultValue) { ... }

}

, если я пытаюсь получить доступ к методу getConfigValue внутри массива карты, примерно так:

[AssetsEnum.background, 'common/background'+this.getConfigValue()+'.jpg']

консоль выдает ошибку, что getConfigValue не определен. Как мне получить доступ к методу?

Ответы [ 2 ]

1 голос
/ 20 февраля 2020

Чтобы получить доступ к методу класса, вам понадобится ссылка на экземпляр класса. Например,

import OrientationEnum from "../enums/orientation_enum";
import * as gameconfig from "../gameconfig";
import GA from "./analytics";
import * as Raven from "raven-js";
import {getQueryString} from "./tools";

class AssetsManager {

    constructor...

    getConfigValue(key, defaultValue) { ... }

}

const manager = new AssetsManager();

const AssetsMap = new Map([
    [AssetsEnum.background, 'common/background' + manager.getConfigValue() + '.jpg']
]);

Если метод getConfigValue не использует свойства из класса AssetsManager, вы также можете создать метод static. Тогда станет возможным использовать этот метод без экземпляра класса.

import OrientationEnum from "../enums/orientation_enum";
import * as gameconfig from "../gameconfig";
import GA from "./analytics";
import * as Raven from "raven-js";
import {getQueryString} from "./tools";

const AssetsMap = new Map([
    [AssetsEnum.background, 'common/background' + AssetsManager.getConfigValue() + '.jpg']
]);

class AssetsManager {

    constructor...

    static getConfigValue(key, defaultValue) { ... }

}
0 голосов
/ 20 февраля 2020

Вы не можете получить доступ к методу getConfigValue() вне класса с ключевым словом this. Попробуйте поместить свою карту в класс.

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