【问题标题】:Image load in react反应中的图像加载
【发布时间】:2018-10-20 11:02:07
【问题描述】:

我上传的代码较少,因为我认为它已经足够了
询问是否需要更多来查找错误

async componentDidMount(){


var image = this.props.data.img
console.log(this.props.data.img == './../images/thumbnails/g.png') // true
console.log(this.props.data.img === './../images/thumbnails/g.png') // true
console.log(typeof(this.props.data.img))
await import(image)
            .then((res)=>{
                console.log(res)
                this.setState({img:res})
            })
            .catch((e)=>{
                console.log(this.props.data.img)
                console.log(e)
            })
}

我正在尝试导入图像。
当我使用import('./../images/thumbnails/g.png) 时,它会成功运行,但是当我传递与道具相同的值并尝试导入它时,它会出现错误(未找到模块)。
我记录了这些值,所有的结果都是真的,意味着字符串和道具字符串是相同的,那么为什么我会得到 2 种不同的行为?

【问题讨论】:

  • 您无法通过将字符串作为变量传递给import 来导入文件。检查stackoverflow.com/a/47956054/7232300
  • 基本上,当您的模块捆绑器正在捆绑您的应用程序时,this.props.data.img 的值不可用,因为该值仅在运行时可用(即捆绑后)。

标签: reactjs react-props react-image


【解决方案1】:

您应该在您的应用程序上安装file-loader,然后在您的 jsx/js/css 文件中使用该图像。

要安装file-loader,请使用以下命令:

npm install file-loader --save-dev

并通过以下代码更新您的webpack

module.exports = {
  module: {
    rules: [
      {
        test: /\.(png|jpg|gif)$/,
        use: [
          {
            loader: 'file-loader',
            options: {}
          }
        ]
      }
    ]
  }
}

然后导入你的文件

import img from './file.png'

要根据道具加载图像,您可以通过以下方式进行:

<img src={require(this.props.name)} alt=''/>

<img src={require('../assets/images/yourimage.png')} alt=''/>

<img src={require(`../assets/images/${this.props.name.toLowerCase()}.png`)}/>

【讨论】:

  • 我在网站上成功加载了图像,但在将图像路径字符串值作为道具传递时无法执行相同的操作。我已经设置了文件加载器,它工作正常
  • 我需要使用&lt;img src={require(this.props.name)} alt=''/&gt;,但它会抛出错误Uncaught Error: Cannot find module "." 这实际上是一个不同的字符串
猜你喜欢
  • 1970-01-01
  • 2022-10-07
  • 1970-01-01
  • 1970-01-01
  • 2022-07-24
  • 2019-08-25
  • 2021-05-30
  • 2021-04-19
  • 1970-01-01
相关资源
最近更新 更多