为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

眼眸繁星 2021-05-01 18:58:36
我遇到一个奇怪的问题。如果我使用这样的值设置变量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 回答

?
holdtom

TA贡献1805条经验 获得超10个赞

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


let data = {

    tramwayen: require('../assets/JSON/tramwayen.json'),

    something: require('../assets/JSON/something.json'),

    // and so on

};

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


查看完整回答
反对 回复 2021-05-13
?
慕码人2483693

TA贡献1860条经验 获得超9个赞

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


这是我的,我将不同的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];

};


查看完整回答
反对 回复 2021-05-13
  • 2 回答
  • 0 关注
  • 556 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信