【问题标题】:How to load an image onto the page with react from dynamic data?如何通过动态数据做出反应将图像加载到页面上?
【发布时间】:2017-07-24 18:37:27
【问题描述】:

我想在我的 react 应用页面上显示一张图片

import egypt from '../images/egypt.svg'

<div>
   <img src={egypt}/>
</div>

这是正确的做法吗?

我也想从这样的对象中加载它:

options: [{
       optionOne: {
         answer: 'bolivia',
         image: './images/egypt.svg'
       }
     }]

如何在屏幕上显示?

我的错误是说我需要一个合适的加载器。我试着用这个:https://www.npmjs.com/package/image-webpack-loader

但它说:Can't resolve 'file-loader'

  {
    test: /\.svg$/i,
    loaders: [
        'file-loader?hash=sha512&digest=hex&name=[hash].[ext]',
        'image-webpack-loader?bypassOnDebug&optimizationLevel=7&interlaced=false'
    ]
  }

【问题讨论】:

  • 为什么要导入图像文件?为什么不使用常规的src 属性作为图像标签,并带有图像文件的 URL?你不需要做任何特别的事情
  • 你安装了文件加载器吗?

标签: reactjs webpack loader


【解决方案1】:

如果

import egypt from '../images/egypt.svg'

<div>
   <img src={egypt}/>
</div>

在你的代码中工作并且你已经正确配置了 webpack,你将能够在 React 中动态显示图像,方法是在模板文字的帮助下要求它们

<img src={require(`${obj.optionOne.img}`)}

还要确保使用命令安装url loader

npm install -s url-loader

您需要将webpackurl-loader 配置为

 {
        test: /\.(jpe?g|png|gif|svg)$/,
        use:['url-loader']
    }

【讨论】:

  • obj.optionOne.img 是字符串本身。为什么我们需要模板文字?
  • 因为直接写 require(obj.optionOne.img) 不能解决它
  • 你直接将字符串变量传递给 require 不会解决它。看到模板文字如何做到这一点很奇怪。
猜你喜欢
  • 2016-02-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-24
  • 1970-01-01
  • 2022-01-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多