我是ReactJS的新手,我想在组件中导入图像。这些图像位于公用文件夹内部,我不知道如何从react组件访问该文件夹。
有任何想法吗 ?
编辑
我想在Bottom.js或Header.js中导入图像
结构文件夹为:
我不使用webpack。我是不是该 ?
编辑2
我想使用webpack加载图像和其余资产。因此,在我的配置文件夹中,我有以下文件:
我需要在哪里添加图像的路径以及如何添加?
谢谢
src="/images/logofooter.png"
?
Answers:
要公开引用图像,我知道有两种方法可以直接使用。就像上面的Homam Bahrani所说的那样。
使用
<img src={process.env.PUBLIC_URL + '/yourPathHere.jpg'} />
既然这有效,那么您实际上不需要任何其他东西,这也可以工作...
<img src={window.location.origin + '/yourPathHere.jpg'} />
您不需要任何webpack配置。
在您的组件中给出图像路径。默认情况下,react会在公共目录中知道它。
<img src="/image.jpg" alt="image" />
react文档在文档中很好地解释了这一点,您必须使用process.env.PUBLIC_URL
放置在公用文件夹中的图像。见这里获取更多信息
return <img src={process.env.PUBLIC_URL + '/img/logo.png'} />;
1-如果您使用webpack进行配置是很好的,但是您只需使用映像路径,React就会发现它位于公共目录中。
<img src="/image.jpg">
2-如果要使用Webpack,这是React中的标准做法。您可以在webpack.config.dev.js文件中使用这些规则。
module: {
rules: [
{
test: /\.(jpe?g|gif|png|svg)$/i,
use: [
{
loader: 'url-loader',
options: {
limit: 10000
}
}
]
}
],
},
然后您可以将图像文件导入react组件并使用。
import image from '../../public/images/logofooter.png'
<img src={image}/>
您应该在此处使用webpack来简化生活。在您的配置中添加以下规则:
const srcPath = path.join(__dirname, '..', 'publicfolder')
const rules = []
const includePaths = [
srcPath
]
// handle images
rules.push({
test: /\.(png|gif|jpe?g|svg|ico)$/,
include: includePaths,
use: [{
loader: 'file-loader',
options: {
name: 'images/[name]-[hash].[ext]'
}
}
之后,您可以简单地将图像导入到您的react组件中:
import myImage from 'publicfolder/images/Image1.png'
如下使用myImage:
<div><img src={myImage}/></div>
或者将图像导入到组件的本地状态
<div><img src={this.state.myImage}/></div>
我们知道React是SPA。通过从JSX扩展到适当的HTML,一切都从根组件呈现。
因此,在哪里使用图像都没有关系。最佳实践是使用绝对路径(参考public)。不用担心相对路径。
就您而言,这应该在任何地方都有效:
"./images/logofooter.png"
您也可以使用此方法..它可以在您的公用文件夹中假设“ yourimage.jpg”起作用。
<img src={'./yourimage.jpg'}/>