图像加载反应

时间:2018-10-20 11:02:07

标签: reactjs react-props react-image

我上传的代码较少,因为我认为它是enoug
询问是否需要更多代码才能发现错误

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)时,它会成功运行,但是当我传递与props相同的值并尝试导入该值时,则会通过错误(找不到模块)进行导入。
我记录值,并且所有结果都是正确的,这意味着字符串和道具字符串相同,然后为什么我会得到2种不同的行为?

1 个答案:

答案 0 :(得分:0)

您应该在应用程序上安装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`)}/>