将 SVG 作为 Gatsby 中的组件导入

2024-03-30

我见过以下解决方案:

import { ReactComponent as Img } from 'path/to/file.svg'

但在盖茨比看来,这行不通。我知道存在这方面的插件,但也许可以更容易地完成。


正如您所说,有一些插件可以实现此目的,这意味着更干净的代码(而不是组件中内联的完整 SVG 标签)具有相同的最终结果。使用gatsby-plugin-react-svg https://www.gatsbyjs.org/packages/gatsby-plugin-react-svg/插件你只需要像这样导入你的SVG:

import Icon from "./path/assets/icon.svg";

安装时只需要使用添加依赖即可npm or yarn并在你的gatsby-config.js使用这个片段:

{
  resolve: 'gatsby-plugin-react-svg',
  options: {
    rule: {
      include: /assets/
    }
  }
}

注意/assets/是基于正则表达式的包含规则,因此该值必须是您的 SVG 文件夹(即:/svg/) and 必须仅包含.svg files。换句话说,如果你的路径是/images/svg/您的包含规则只能包含/svg/(您也可以添加完整路径,但需要转义斜杠)。

之后,如果 SVG 的内联样式不适用,您将需要设置 SVG 的样式。


如果您想采用非插件方法,您可以简单地使用基于 React 的方法,只需创建一个返回 SVG 的组件即可:

export const YourSvgComponent = () => (
  <svg
    version="1.1"
    baseProfile="full"
    width="300"
    height="200"
    xmlns="http://www.w3.org/2000/svg"
  >
    <rect width="100%" height="100%" fill="red" />
    <circle cx="150" cy="100" r="80" fill="green" />
    <text x="150" y="125" font-size="60" text-anchor="middle" fill="white">
      SVG
    </text>
  </svg>
);

现在您只需导入并使用它即可。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 SVG 作为 Gatsby 中的组件导入 的相关文章

随机推荐

  • 如何删除 Docker 镜像?

    我有以下图像 alex alexvps sudo docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
  • ruby on Rails 中的 Facebook 重定向 url 打开 ssl 错误

    我已经按照 Ryan 在第 235 集中解释的那样关注了omniauth devise facebook 应用程序 在用户授权后 我们在以下位置收到错误http localhost 3000 auth facebook callback c
  • 创建像 Office 2010 一样的动画启动屏幕

    如何使用 C 创建像 Office 2010 中那样的动画启动屏幕 这个问题是关于winform还是wpf 如果是关于wpf的 动画启动屏幕只不过是加载 主窗口 时显示的 wpf 窗口 您可以按照 wischi 的说明使用 Expressi
  • jquery 移动和 flot 库

    我正在一个小型 jquery 移动框架站点中实现 flot 包含flot的页面 内容div位于辅助页面上 第一次显示浮动页面时 图表呈现得很好 返回到主页并再次前进到浮动页面时 图表不会呈现 内容来自 asp mvc 视图 div div
  • AS3 到 JS 编译器

    我偶然发现了 AS3 到 JS 编译器Jangaroo http www jangaroo net home 看起来它可能是一个有用的工具 因为它支持很多我喜欢的 AS3 功能 还有其他这样的编译器吗 我可以使用其他语言吗 学习一下 编译成
  • 您可以在 display:table-cell 中相对或绝对定位项目吗?

    我有一个链接 我希望它始终位于其所在单元格的右下角 现在该链接位于 元素中 我尝试同时进行绝对定位和相对定位 但可以获得我想要的效果 我有一排有 4 个单元格 当尝试应用绝对位置时 它将元素带到右侧的最后一个单元格 而不是仅仅将其放置在它所
  • matlab中无for循环的行列矩阵乘法

    我遇到以下问题 并且无法想出没有 for 循环的解决方法 考虑两个矩阵 a rand N 3 b rand 3 N 我想要得到的是 b i a i 一个 3 3 矩阵 在第三维中串联所有i 因此 对于上面的示例 结果应该是 3 3 N 矩阵
  • 如何在 Eloquent 中检查行是否被软删除?

    在 Laravel 5 1 中 有没有一种好方法来检查雄辩的模型对象是否已被软删除 我不是在谈论选择数据 而是一旦我有了对象 例如Thing withTrashed gt find id 到目前为止我能看到的唯一方法是 if thing g
  • 证书验证失败:无法获取本地颁发者证书

    我正在尝试使用 python 从网络获取数据 我为其导入了 urllib request 包 但在执行时出现错误 certificate verify failed unable to get local issuer certificat
  • 在共享 x 轴的子图上绘制时 x 刻度消失[重复]

    这个问题在这里已经有答案了 当我尝试在同一个子图上绘制一条线和一个区域时 会发生这种情况 我发现我的 x 刻度在我调用 ay ax twinx 并在 ay 上绘图后消失了 这是导致此错误的我的代码 fig axes plt subplots
  • 将react-hooks-testing-library与jest.spyOn一起使用 - 不调用间谍

    我在设置单元测试以确定是否使用正确的参数调用函数时遇到问题 useAHook返回函数foo它调用函数bar 代码看起来像这样 myModule js export const useAHook arg1 arg2 gt const foo
  • Android:RES 目录中除 ic_ 之外的文件前缀标准?

    有人知道 RES 目录中是否有我们需要使用 或建议使用 的标准前缀列表 即 Android 建议使用 ic 作为图标 这很棒 我正在遵循这一点 但是徽标 按钮图像 导航图像等呢 我真的很想知道是否存在其他人以及其他人都在使用什么 提前致谢
  • WPF Multitrigger.ExitActions 将覆盖正常触发器

    我有一个无法解决的问题 所以我请她寻求帮助 这是导致我出现问题的代码的一部分
  • 每个基于 WebKit 的浏览器都会使使用 Omniture 的网站崩溃。为什么?

    其实 更准确的说法是 Every基于 WebKit 的浏览器崩溃http m allrecipes com http m allrecipes com 但仅在一个三星 Continuum SCH i400 http www samsung
  • HTML5 画布以一定角度绘制图像

    我正在尝试动画
  • 类似于浏览器的 async_hooks 之类的东西?

    我正在尝试调试在浏览器上下文中运行的一些 第三方 代码 并且我想跟踪所有下游异步函数调用 几乎完全相同async hooks为nodejs提供 本质上 类似https github com mafintosh why is node run
  • putText 用于 UTF-8 字符 (C++)

    我正在使用 putText OpenCV 方法在图像上写入文本 但它仅适用于 ASCII 字符 我需要打印诸如 之类的字符 有人可以帮忙吗 很遗憾 cv putText 仅支持 ASCII 有一个打开错误报告 http www code o
  • 跨多个场景使用 AVAudioPlayer Swift 并能够调节音量

    您好 我想知道是否有一种方法可以在多个场景中使用 AVAudioPlayer 并更改音量 我目前将其放置在我的 gameViewController 中 它是我的应用程序所有场景的控制器 override func viewDidAppea
  • Rails 关联方法如何工作?

    Rails 关联方法如何工作 让我们考虑这个例子 class User lt ActiveRecord Base has many articles end class Article lt ActiveRecord Base belong
  • 将 SVG 作为 Gatsby 中的组件导入

    我见过以下解决方案 import ReactComponent as Img from path to file svg 但在盖茨比看来 这行不通 我知道存在这方面的插件 但也许可以更容易地完成 正如您所说 有一些插件可以实现此目的 这意味