require()无法使用变量-反应本机

时间:2019-04-25 14:44:44

标签: javascript react-native

我遇到一个奇怪的问题。如果我使用这样的值设置变量direclty:“ const myString ='someWord';”可以,但是如果我从类似“ const myString = someVariable;”这样的变量中获取值,那将不起作用,并且如果我在一个也不起作用的条件块上设置了该值。

所以,工作:

    var jsonName = 'tramwayen';
    const pathex = require('../assets/JSON/' + jsonName);
    var json = JSON.parse(JSON.stringify(pathex));

不起作用:

    var jsonName = variable;
    const pathex = require('../assets/JSON/' + jsonName);
    var json = JSON.parse(JSON.stringify(pathex));

不起作用:

    var jsonName = '';
    if (condition) {
       jsonName = 'tramwayen';
    }
    const pathex = require('../assets/JSON/' + jsonName);
    var json = JSON.parse(JSON.stringify(pathex));

我真的不明白。

我有此错误: “第41行的无效调用:require('../ assets / JSON /'+ jsonName2)”

2 个答案:

答案 0 :(得分:1)

大多数JS捆绑程序无法处理动态require导入。您可能要加载所有文件,并将它们放在一个对象中:

let data = {
    tramwayen: require('../assets/JSON/tramwayen.json'),
    something: require('../assets/JSON/something.json'),
    // and so on
};

并使用data对象检索所需的数据。

答案 1 :(得分:0)

根据我在做一些研究时所读到的内容,似乎不可能动态地提出要求。在反应中本机要求应该是静态的。 但是有一些解决方案可以避免此问题。

这是我的,我将不同的Json的所有数据放在一个json上,然后动态选择要获取的部分数据。

我还可以将所有静态需求放在一个对象上,然后动态地选择要获取的需求。

解决方案1:

    const id = window.currentPI;
    const json = require('../assets/JSON/mainData.json');
    const nbreOfPix = json[`${id}`].preData.numberOfPictures;

解决方案2:

const IMAGES = {
    tramwayen: require('../assets/CtrlPI/PHOTO_articles/008_02_Img.png'),
    tramwayen2: require('../assets/CtrlPI/PHOTO_articles/HC002_04_Img.png')
};

getImage = (name) => {
    return IMAGES[name];
};