reactjs - 如何在 GatsbyJS 项目中显示图像?
问题描述
如何显示图像?下面无法正确显示。
在src/components/Header.js
文件中:
<img src="../images/logo.png" style={{width:"112",height:"28"}} />
解决方案
将资产直接导入文件
import React from "react" import logo from "./logo.png" // Tell Webpack this JS file uses this image console.log(logo) // /logo.84287d09.png function Header() { // Import result is the URL of your image return <img src={logo} alt="Logo" /> } export default Header
这是最好的原因是它可以通过 Webpack 捆绑管道进行优化,例如压缩、数据 URL、缓存破坏文件名哈希等。
使用静态文件夹
这对于图像以外的文件最有用。
static
您可以在项目的根目录下创建一个文件夹。您放入该文件夹的每个文件都将被复制到该public
文件夹中。例如,如果您将一个名为sun.jpg
的文件添加到文件static
夹,它将被复制到public/sun.jpg
您可以在代码中引用静态文件夹中的资产,而无需任何特殊要求:
render() { // Note: this is an escape hatch and should be used sparingly! // Normally we recommend using `import` for getting asset URLs // as described in the “Importing Assets Directly Into Files” page. return <img src={'logo.png'} alt="Logo" />; }
Corey 的回答引用了Gatsby 文档的“添加自定义 webpack 配置”部分,这对加载图像很有用但没有必要。
推荐阅读
- java - Java 密钥库算法
- python - 将现有数据框提取到数据框数组
- vba - 在多个工作表中选择相同的范围
- chart.js - ChartJS 2.9.4 无法在水平条形图上叠加线条数据
- function - back4app 解析,如何将用户对象 ID 应用到另一个类指针中
- javascript - Reactjs 相对于其他视图定位视图
- c++ - 为什么我必须重新定义 int main
- docker - dockerswarm 容器链接:“tasks.service1”与直接“service1”
- amazon-s3 - Coldfusion:尝试在 AWS S3 中上传文件
- javascript - Javascript - 循环到具有日期时间数据的数组并检查日期是否在数组内的日期之间