我一直试图弄清楚如何通过React和Webpack动态添加图像 . 我在 src/images 下有一个图像文件夹,在 src/components/index 下有一个组件 . 我正在使用url-loader和webpack的以下配置
{
test: /\.(png|jpg|)$/,
loader: 'url-loader?limit=200000'
}
在组件中我知道我可以在创建组件之前在文件顶部为特定图像添加 require(image_path) 但是我想让组件通用并让它获取具有从父组件传递的图像的路径的属性 .
我试过的是:
<img src={require(this.props.img)} />
对于实际的属性,我几乎尝试了从项目根目录,反应应用程序根目录和组件本身到图像的每条路径 .
文件系统
|-- src
| ` app.js
| `--images
| ` image.jpg
| ` image.jpg
| `-- components
| `parent_component.js
| `child_component.js
父组件基本上只是一个容纳孩子倍数的容器,所以......
<ChildComponent img=data.img1 />
<ChildComponent img=data.img2 />
etc....
有没有办法使用反应和webpack与url-loader做到这一点,或者我只是走错了路径来接近这个?
7 回答
这是代码
如果您正在寻找从图像导入所有图像的方法
然后:
你可以在这里找到原始主题:Dynamically import images from a directory using webpack
如果您在服务器端捆绑代码,那么没有什么能阻止您直接从jsx请求资产:
您没有将图像嵌入到包中 . 它们是通过浏览器调用的 . 所以这是;
因此,您必须在父组件上添加import语句:
在儿童班:
使用url-loader,这里描述https://christianalfoni.github.io/react-webpack-cookbook/Inlining-images.html,然后你可以在你的代码中使用:
和
UPDATE :这只测试了服务器端渲染(通用Javascript)这里是我的boilerplate .
只有文件加载器,您可以动态加载图像 - the trick is to use ES6 template strings ,以便Webpack可以选择它:
这将 NOT 工作 . :
要解决此问题,只需使用模板字符串:
webpack.config.js: