【问题标题】:Cannot seem to use a JavaScript variable in require for dynamic import in React似乎无法在 React 的动态导入中使用 JavaScript 变量
【发布时间】:2019-03-15 11:46:58
【问题描述】:

我正在使用 react-google-maps,但我认为我的问题适用于一般用户案例。 我想使用作为道具传入的 url 动态加载图标。但是我发现如果我使用一个变量,我会得到一个错误。请看下面:

当我需要和使用字符串的图标时,它可以正常工作,例如

icon={require('../assets/myPng.png')}

但是如果我的 png 路径是一个变量,例如

let url = '../assets/myPng.png'

icon={require(`${url)`}

我得到错误:

找不到模块'../assets/myPng.png'

谁能告诉我这是怎么回事?

如果我使用icon={require(url},也会失败。

【问题讨论】:

标签: javascript reactjs


【解决方案1】:

最好使用require(...),这样路径将由你的包管理器管理。如果你直接使用一个字符串,它会绕过它,你会得到错误。我建议使用:

const icon = require('../assets/myPng.png')
// ...
<MapComponent icon={icon} ... />

【讨论】:

  • 为什么不只是const { icon } = require('../assets/myPng.png');
  • 因为require(...)在图片上使用时通常返回一个字符串,而不是一个对象。你会在这里得到undefined
  • 感谢您的 cmets,但我需要让 require(...) 使用变量并根据用户动态加载图标,我不能使用硬编码字符串。我看到 npm dynamic-import 并将尝试这样做,但从更多调查来看,似乎不可能以我想要的方式动态要求某些东西 - 不幸的是我不能使用 import。
猜你喜欢
  • 1970-01-01
  • 2021-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-28
  • 2019-02-01
  • 1970-01-01
相关资源
最近更新 更多