如何将 SVG 导入 Next.js 组件?

2024-04-07

我正在尝试将 SVG 图像从文件导入到 Next.js 组件中。

在资产文件夹中,我有 google.svg (图标):

<svg className="svgIcon-use" width="25" height="37" viewBox="0 0 25 25">
    <g fill="none" fillRule="evenodd">
      <path
        d="M20.66 12.693c0-.603-.054-1.182-.155-1.738H12.5v3.287h4.575a3.91 3.91 0 0 1-1.697 2.566v2.133h2.747c1.608-1.48 2.535-3.65 2.535-6.24z"
        fill="#4285F4"
      />
      <path
        d="M12.5 21c2.295 0 4.22-.76 5.625-2.06l-2.747-2.132c-.76.51-1.734.81-2.878.81-2.214 0-4.088-1.494-4.756-3.503h-2.84v2.202A8.498 8.498 0 0 0 12.5 21z"
        fill="#34A853"
      />
      <path
        d="M7.744 14.115c-.17-.51-.267-1.055-.267-1.615s.097-1.105.267-1.615V8.683h-2.84A8.488 8.488 0 0 0 4 12.5c0 1.372.328 2.67.904 3.817l2.84-2.202z"
        fill="#FBBC05"
      />
      <path
        d="M12.5 7.38c1.248 0 2.368.43 3.25 1.272l2.437-2.438C16.715 4.842 14.79 4 12.5 4a8.497 8.497 0 0 0-7.596 4.683l2.84 2.202c.668-2.01 2.542-3.504 4.756-3.504z"
        fill="#EA4335"
      />
    </g>
  </svg>

我需要将该 SVG 导入到 Next.js 组件的内部:

import googleLogo from '../assets/google.svg';

class Login extends React.Component {
  render() {
    return (
      <LoginLayout title="Login Page">
        <div>
          <Link href="/auth/google">
            <a className="button">
              <div>
                <span className="svgIcon t-popup-svg">
                  {googleLogo}   // <---- import here icon
                </span>
                
              </div>
            </a>
          </Link>
        </div>
      </LoginLayout>
    );
  }
}

我安装了这个包:https://www.npmjs.com/package/next-images https://www.npmjs.com/package/next-images

并根据该文档设置配置next.config.js:

const withCSS = require('@zeit/next-css');
const withSass = require('@zeit/next-sass');
const withImages = require('next-images');

module.exports = withCSS(
  withSass({
    webpack: (config) => config,
    distDir: '../_next'
  }),
  withImages({
    exclude: path.resolve(__dirname, 'client/assets/svg'),
    webpack(config, options) {
      return config;
    }
  })
);

为什么我导入 SVG 不起作用?


另一种方法是为您的 svg 制作一个组件。我喜欢这种方法,因为如果 svg 需要的话,我可以轻松地传递宽度、高度颜色等属性。

//GoogleLogo.js
import React from "react";
export default function GoogleLogo() {
  return (
    <svg className="svgIcon-use" width="25" height="37" viewBox="0 0 25 25">
      <g fill="none" fillRule="evenodd">
        <path
          d="M20.66 12.693c0-.603-.054-1.182-.155-1.738H12.5v3.287h4.575a3.91 3.91 0 0 1-1.697 2.566v2.133h2.747c1.608-1.48 2.535-3.65 2.535-6.24z"
          fill="#4285F4"
        />
        <path
          d="M12.5 21c2.295 0 4.22-.76 5.625-2.06l-2.747-2.132c-.76.51-1.734.81-2.878.81-2.214 0-4.088-1.494-4.756-3.503h-2.84v2.202A8.498 8.498 0 0 0 12.5 21z"
          fill="#34A853"
        />
        <path
          d="M7.744 14.115c-.17-.51-.267-1.055-.267-1.615s.097-1.105.267-1.615V8.683h-2.84A8.488 8.488 0 0 0 4 12.5c0 1.372.328 2.67.904 3.817l2.84-2.202z"
          fill="#FBBC05"
        />
        <path
          d="M12.5 7.38c1.248 0 2.368.43 3.25 1.272l2.437-2.438C16.715 4.842 14.79 4 12.5 4a8.497 8.497 0 0 0-7.596 4.683l2.84 2.202c.668-2.01 2.542-3.504 4.756-3.504z"
          fill="#EA4335"
        />
      </g>
    </svg>
  );
}

并在上面的文件中。

  import GoogleLogo from "./GoogleLogo";

  class Login extends React.Component {
    render() {
      return (
        <LoginLayout title="Login Page">
          <div>
            <Link href="/auth/google">
              <a className="button">
                <div>
                  <span className="svgIcon t-popup-svg">
                    <GoogleLogo />
                  </span>

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

如何将 SVG 导入 Next.js 组件? 的相关文章

  • 如何使用键盘和鼠标控制相机 - Three.js

    我在 WEB GL 中有一个带有 Three js 的 3D 环境 并且我曾经使用 Orbitcontrols js http codepen io nireno pen cAoGI http codepen io nireno pen c
  • 限制文本区域中每行的字符数

    我整个周末都在寻找解决这个难题的方法 但尚未找到一个可以正常工作的解决方案 我想要实现的是限制文本区域中每行的字符数 不是相同地限制它们 而是我选择的每行不同的字符数 例如 我只想在我的文本区域中包含 4 行 第 1 2 和 3 行将限制为
  • 使用 Javascript 在 Imacros 中循环

    我如何使用 javascript 循环 imm imacros 脚本 我搜索了一下 发现了这个 for i 0 i lt n i iimPlay marconame iim 但当我使用它时 我的浏览器 Firefox 18 挂起 for i
  • ant-d upload中如何为removeFile添加PopConfirm一个图片文件

    我正在使用 Ant d Upload 通过本地系统上传文件 然后单击文件预览图像上的删除图标 图像文件将被删除 我想添加一个弹出确认 所以我尝试在 onRemovefunction 中添加确认作为承诺但它不起作用 它在浏览器中显示警报 on
  • 为什么 jQuery 点击事件会多次触发

    我这里有这个示例代码http jsfiddle net DBBUL 10 http jsfiddle net DBBUL 10 document ready function creategene click function confir
  • 计算Javascript中两次点击之间的时间

    我想用 javascript 计算属性的两次点击之间的时间 但我不知道如何 例如 a href click here a 如果用户单击多次 假设 5 秒内 我想显示警报 如果有帮助的话我正在使用 jQuery 我对 javascript 不
  • 将一个文本框的内容复制到另一个文本框

    假设在文本框中输入了一个条目 是否可以在第二个文本框中保留相同的输入文本 如果是这样 这是如何完成的
  • Flask wtf.quick_form 运行一些 javascript 并设置表单变量

    我正在创建博客文章 到目前为止已经使用普通的 html 表单完成了 我所做的一个有趣的想法是运行 javascript onclick 并使用页面中的额外数据在表单中设置一个隐藏变量 这很好地传递到服务器并通过 request form 获
  • 在 MVC Razor 中的 C# 和 Javascript 之间共享常量

    我想在服务器上的 C 和客户端上的 Javascript 中都使用字符串常量 我将常量封装在 C 类中 namespace MyModel public static class Constants public const string
  • 如何记录返回的事件发射器

    如何记录所发出的事件stream返回于MyFunc 与 JSDoc MyFunc description param Object opts description return Stream description function My
  • 如何改变HTML5视频的播放速度?

    如何更改 HTML5 中的视频播放速度 我查过视频标签的属性 https www w3schools com html html5 video asp在 w3school 但无法做到这一点 根据这个网站 http www chipwreck
  • iframe 重新加载按钮

    我浏览了很多网站 但似乎没有一个能正常工作 或者我不明白它们 我想要一个刷新某个 iframe 的简单按钮 该按钮将位于父页面上 并且 iframe 名称为 Right 有很多方法可以做到这一点 假设这个iframe markup 我们可以
  • 用数组反向查找对象

    假设我有一个这样的对象 resourceMap a 0 1 2 3 4 5 6 7 8 9 10 b 11 12 c 21 23 d 54 55 56 57 510 确定是否的最佳方法是什么resourceId 21将会 c 我们不知道钥匙
  • 如何访问另一个 mobx 商店中的 mobx 商店?

    假设以下结构 stores RouterStore js UserStore js index js each of Store jsfiles 是一个 mobx 存储类 包含 observable and action index js只
  • 是否可以使用打字稿映射类型来创建接口的非函数属性类型?

    所以我正在研究 Typescript 的映射类型 是否可以创建一个接口来包装另一种类型 从而从原始类型中删除函数 例如 interface Person name string age number speak void type Data
  • Jquery:选择菜单以显示和隐藏某些div元素

    我正在创建一个选择菜单 根据所选选项显示和隐藏某些 div 像这样的东西
  • 替换两个引号之间的字符串

    我想转动一根绳子str hello my name is michael what s your s into hello my name is span class name michael span 我怎样才能在 JavaScript
  • 在javascript中动态生成行?

    我是 javascript 新手 我想在按下 Tab 时动态生成行 并希望获取在动态生成的行中输入的值 以便我可以在 servlet 代码中使用这些值 这是我的html
  • 如何调试 Gulp 任务?

    如何调试我的中定义的 gulp 任务gulpfile js使用诸如 Google Chrome 调试器之类的调试器逐行单步执行任务的代码 对于 Node js 6 3 版本 您可以使用 inspect flag https nodejs o
  • 在 javascript 中使用 xPath 解析具有默认命名空间的 XML

    我需要创建一个 XML xPath 解析器 所有解析都必须在客户端进行 使用 JavaScript 我创建了一个 javascript 来执行此操作 在默认名称空间发挥作用之前 一切看起来都正常 我根本无法查询具有默认命名空间的 XML 我

随机推荐

  • Laravel 5:如何将播种器类添加到自动加载?

    我遵循文档 http laravel com docs master migrations database seeding http laravel com docs master migrations database seeding
  • 按 eloquent 中的最佳匹配排序

    我从雄辩的查询中得到了一些结果 我想按最佳匹配对它们进行排序 我怎样才能在 laravel eloquent 中做到这一点 在这里我找到了一些 SQL 解决方案 但我无法在 eloquent 构建器中使用它 SELECT TOP 5 FRO
  • 使用 ogr2ogr 将 svg 转换为 geojson 失败

    我从以下位置下载了芬兰的 svg 地图http www amcharts com svg maps map finland http www amcharts com svg maps map finland 我想将其转换为 topojso
  • 无法在 VSCode 中使用 pygame

    我目前正在做一项任务 我必须完成一些功能并导入 pygame 以便我可以运行一个跑步程序 当我尝试通过运行命令导入 pygame 时pip3 install r requirements txt 有一个需求文本文件 里面只写着 pygame
  • Azure Service Fabric 节点、节点类型、实例和规模集

    在尝试了几天Azure的Service Fabric之后 我仍然对以下四个关键词感到不舒服 实例 节点 节点类型 规模设定 他们的意思是什么 有什么区别 Instance 取决于上下文 它可能意味着虚拟机 服务实例等 Node 集群内的节点
  • Moment.js 如何使用 fromNow() 在几小时内返回所有内容?

    我已经搜索过moment js 文档 http momentjs com docs and 堆栈溢出 https stackoverflow com 的一种使用方法fromNow 功能但在几小时内返回所有内容 我的意思是 moment 20
  • android mms通过mms url下载mms内容

    我正在尝试下载MMS通过 MMS url 获取图片内容 但返回 403 禁止 服务器响应 其中包含无效内容MSISDN数字 我已将我的代码粘贴在下面以供参考 提前致谢 private static boolean downloadThrou
  • 不带 React 的 TypeScript JSX

    我想在 TypeScript 中使用 JSX 语法 但不想使用 React 我在这里看到了其他相关问题的答案 但没有任何内容足够完整或详细 无法提供任何帮助 我读了本指南 https basarat gitbooks io typescri
  • 递归地跟踪带有最终值的嵌套对象键

    给定一个如下所示的对象 可以具有未知数量的嵌套属性 const theme fonts primary Arial secondary Helvetica colors primary green secondary red margin
  • Highchart x 轴标签显示双日期

    我在我的项目中使用 highcharts 它在 x 轴上显示两次日期 如何删除它并在 x 轴上仅获取 1 个日期 Here is the snapshot of how it looks like right now 我怎样才能摆脱双日期显
  • 如何用 MS Word 中的一些计算替换括号中的数字

    当我在文章中间插入新的参考文献时 在 MS Word 中将某些序列号 例如 30 31 32 替换为 31 32 33 时遇到问题 我还没有在 GUI 中找到解决方案 所以我尝试使用 VBA 来进行替换 我在堆栈溢出中发现了类似的问题 MS
  • Reactjs 可以像更改 props 一样更改 onclick 函数名称

    可以更改 onclick 函数 例如更改 props 例如更改 props message to new message 例如 var SmallMessageBox React createClass getDefaultProps fu
  • 识别 PHP 未使用和未定义的变量 sublime

    我正在使用 sublimetext3 未注册 我想知道如何配置 sublime 以显示 php 中未使用和未定义的变量 sublimelinter phplint 做了一些有用的工作 但它无法识别自动加载的类 这在开发时可能非常烦人 我正在
  • 在服务器上运行的 Span 和默认的 asp 标签哪个更好?

    我有一个简单的 asp net 网页 其中包含一个大约 5 个表TR每行有 2TD 在页面加载中 我获取用户数据 5个属性 并在此页面中查看它们 以下是前两行 table tr td FullName td td span span td
  • OpenFire - 使用 PubSub 的永久群聊

    首先从这个问题 Smack openfire 如何让用户永久留在群聊室 https stackoverflow com questions 19653877 asmack openfire how do i keep a user perm
  • Handlebars.js Else If

    我使用 Handlebars js 进行客户端视图渲染 If Else 效果很好 但我遇到过需要 ELSE IF 的 3 路条件 这不起作用 if FriendStatus IsFriend div class ui state defau
  • 动态 fnAddData 时,数据表显示“正在处理...”标签

    我有一个函数可以动态地将数据添加到数据表中 这是函数 function fnClickAddRow for i 0 i lt 10000 i example dataTable fnAddData giCount 1 giCount 2 g
  • 为什么 Rust 中 String 隐式转换为 &str?

    考虑以下代码 let s String from hello let mut r String new for c in s chars r push c As chars的方法是 str 为什么可以String叫它 我想这与coercio
  • 如何在 VS Code 中调试 nightwatch 测试

    我正在尝试使用 VS Code 调试 nightwatch e2e 测试 我使用打字稿编写测试 只有当我在 js 文件中放置断点时它才能工作 之后它会转到 ts 文件 我可以从那里调试它 如果我把它放在我的测试的 ts 文件中 它永远不会停
  • 如何将 SVG 导入 Next.js 组件?

    我正在尝试将 SVG 图像从文件导入到 Next js 组件中 在资产文件夹中 我有 google svg 图标