React:如何使用if语句动态导入?

时间:2019-01-15 08:43:52

标签: reactjs dynamic import conditional

我试图了解如何根据应用程序的当前语言导入我的网站图标。我遵循了@thecodejack here的回答,但仍然返回错误:

“ faviconApple”未定义
未定义'favicon32x32'
...
我在做什么错了?

我尝试过的

  if(this.state.language === 'nl') {
  import ('./library/imgs/favicon/nl/apple-touch-icon.png')
  .then((faviconApple)) 
  import ('./library/imgs/favicon/nl/favicon-32x32.png')
  .then((favicon32x32)) 
  import ('./library/imgs/favicon/nl/favicon-16x16.png')
  .then((favicon16x16)) 
  import ('./library/imgs/favicon/nl/safari-pinned-tab.svg')
  .then((faviconSafari)) 
  import ('./library/imgs/favicon/nl/favicon.ico')
  .then((favicon)) 
} else if(this.state.language === 'fr') {
  import ('./library/imgs/favicon/fr/apple-touch-icon.png')
  .then((faviconApple)) 
  import ('./library/imgs/favicon/fr/favicon-32x32.png')
  .then((favicon32x32)) 
  import ('./library/imgs/favicon/fr/favicon-16x16.png')
      .then((favicon16x16)) 
  import ('./library/imgs/favicon/fr/safari-pinned-tab.svg')
      .then((faviconSafari)) 
  import ('./library/imgs/favicon/fr/browserconfig.xml')
.then((faviconBrowserconfig)) 
} else if(this.state.language === 'en') {
  import ('./library/imgs/favicon/en/apple-touch-icon.png')
      .then((faviconApple)) 
  import ('./library/imgs/favicon/en/favicon-32x32.png')
      .then((favicon32x32)) 
  import ('./library/imgs/favicon/en/favicon-16x16.png')
      .then((favicon16x16)) 
  import ('./library/imgs/favicon/en/safari-pinned-tab.svg')
      .then((faviconSafari)) 
  import ('./library/imgs/favicon/en/favicon.ico')
      .then((favicon)) 
}

1 个答案:

答案 0 :(得分:1)

在您的代码中,您未将解析模块分配给任何对象。这可能是问题所在。 尝试

let faviconApple;
if (this.state.language === 'nl') {
  import('./library/imgs/favicon/nl/apple-touch-icon.png')
    .then(favA => { faviconApple = favA; });
}