如何使用 webpack 直接在 React 组件中加载 SVG?

2023-11-26

我想直接在我的中渲染材质设计图标NextButton使用 webpack 的组件。这是我的代码的相关部分:

var NextIcon = require('material-design-icons/navigation/svg/production/ic_chevron_right_18px.svg');

var NextButton = React.createClass({
  render: function() {
    return (
      <Link to={this.props.target} className='button--next'>
        {this.props.label} {NextIcon}
      </Link>
    )
  }
});

但这并没有像我想象的那样起作用。它似乎将 svg 输出为字符串,而不是元素。

我尝试过使用raw-loader, img-loader, url-loader, file-loader and svg-loader但我找不到正确的方法来做到这一点。


由于您的 SVG 内容存储为字符串而不是 React 元素,因此您需要使用危险地设置innerHTML.

var NextIcon = require('material-design-icons/navigation/svg/production/ic_chevron_right_18px.svg');

var NextButton = React.createClass({
  render: function() {
    return (
      <Link to={this.props.target} className='button--next'>
        {this.props.label} <span dangerouslySetInnerHTML={{ __html: NextIcon }} />
      </Link>
    )
  }
});

您也许可以通过创建一个 webpack 加载器来解决这个问题,只要您需要 SVG 文件,它就会自动为您执行此操作。

angerlySetInnerHTML.loader.js

module.exports = function(content) {
    return (
        'module.exports = require("react").createElement("span", {' +
            'dangerouslySetInnerHTML: {' +
                '__html: ' + JSON.stringify(content) +
            '}' +
        '});'
    );
};

webpack.config.js

loaders: [
  {
    test: /\.svg$/,
    loader: require.resolve('./dangerouslySetInnerHTML.loader'),
    exclude: /node_modules/,
  },
],

之前的代码片段将变为:

var NextIcon = require('material-design-icons/navigation/svg/production/ic_chevron_right_18px.svg');

var NextButton = React.createClass({
  render: function() {
    return (
      <Link to={this.props.target} className='button--next'>
        {this.props.label} {NextIcon}
      </Link>
    )
  }
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 webpack 直接在 React 组件中加载 SVG? 的相关文章

  • 如何在 React 中使用单选按钮?

    我正在制作表格 并且需要无线电输入 如何在 onSubmit 函数中获取已检查的无线电输入 正确的方法是什么 这是我的代码 当我提交时 我的 myRadioInput variable 包含选项 A 或选项 B React createCl
  • 动画 SVG 在页面加载之前不会显示动画

    我的网站包含大量广告 加载需要一段时间 确切地说 这并不是一个问题 但我注意到任何 SVG 动画都会立即绘制第一帧 但动画只有在页面上的所有加载完成后才会出现 SVG 动画通常指示旋转器 加载图标 有没有办法立即启动SVG动画 或者如果我将
  • 检索设备信息 React-Native iOS

    嘿 我正在尝试从 iPad 获取设备信息 我尝试过使用https github com rebeccahughes react native device info https github com rebeccahughes react
  • 使用react-vis在x轴上以(MM-DD)格式显示日期

    我正在尝试在我的项目中实现react vis 我需要根据日期显示数据 我正在使用tickFormat 但它在x轴上显示了两次相同的日期 我在这里添加了几行代码
  • webpack mini-css-extract-plugin => 在单个条目上输出多个 css 文件

    如何为我的 gutenberg 块设置 webpack 以提取多个 css 文件并根据样式表的名称捆绑这些文件 Zack Gordon 在 webpack 3 中使用了 Extract Text Plugin 这非常有效 但在 webpac
  • Jest moduleNameMapper 查找文件:“resolver”:未定义

    我有一个文本文件 除其他外 component路径下的文件夹 src components text 但是 当 webpack 别名为 Jest 时 Jest 找不到这个文件import Text from components text
  • 'TypeError [ERR_INVALID_ARG_TYPE]:“path”参数必须是字符串类型。收到的类型未定义'

    我正在做一个 React 项目 遇到了一个让我困惑的问题 每当我跑步时yarn start我收到此错误 类型错误 ERR INVALID ARG TYPE 路径 参数必须是类型 细绳 收到的类型未定义 我不知道为什么会发生这种情况 要解决此
  • 如何在react中监听localstorage值的变化?

    我想在用户登录时显示一个按钮 如果用户未登录 那么我不会显示按钮 当用户登录时 我将设置本地存储值 当我在登录组件中设置本地存储时 标头组件必须侦听该事件并且显示按钮 我正在使用 addEventListener 进行监听 但它没有监听 我
  • 使用反应测试库提交带有数据的单元测试表单

    我有一个带有表单的反应组件 我想对表单是否使用正确的数据提交进行单元测试 使用 jest 和 RTL 这是我的组件和单元测试方法 成分 class AddDeviceModal extends Component handleOnSave
  • 如何在react-google-maps中添加标记?

    在中使用 React JS流星1 5 https www meteor com Question 需要一种添加方式Marker using 反应谷歌地图 https github com tomchentw react google map
  • Material UI 选项卡:嵌套选项卡会导致无效值错误

    嵌套选项卡会导致控制台中出现以下错误 梅 value提供给 Tabs 组件无效 带有这个的选项卡value 0 不是文档布局的一部分 确保文档中存在或不存在该选项卡项display none In the 基本选项卡 https mui c
  • REACT NATIVE - 关闭导入模式时更改屏幕状态

    当我关闭模式时 我需要检测它是否已关闭以更改父页面的状态 当我更改状态的任何属性 模态 时无法更改它 ExpertFeedback js import ModalExpertFeedback from ModalExpertFeedback
  • Metro 遇到错误:尝试解析模块“firebase”时

    启动模拟器后出现此错误 我在图像下添加代码并在终端上出错 这是我的 App js 文件模拟器上的错误图像 https i stack imgur com pffip png 错误 错误 尝试解析模块时firebase从文件 Users ca
  • React - 澄清语法混乱

    感谢您帮助我摆脱困境 我对 REACT 很陌生 显然对一些基本概念很困惑 感谢您的帮助 这是我的 app js import React from react import TodoItem from components TodoItem
  • Redux 更新嵌套数据 [不可变更新模式]

    任何人都可以帮助解决此更新模式 我没有使用任何像 immer 这样的库 我必须更新嵌套对象 数据看起来像 dis 样本数据 isFetching false data nba stack 1 我的减速机 state isFetching f
  • TS1128:预期声明或声明(文件结尾)

    我正在开发一个 TypeScript React 项目 刚刚习惯它 已经一年没有写过 React 了 等等 并且遇到了一个问题 当我编写此组件时 我遵循了我找到的一些文档 但我在此文件末尾收到 TS1128 预期声明或声明 错误 我无法弄清
  • fetch API 不通过 post 发送数据

    我在使用 Fetch API 通过 post 发送数据时遇到问题 服务器只收到一个空的 JSON 有人能帮我吗 基本上 我正在更新状态数据并将其发送到 API 提交的数据 请求 submitedData async event gt eve
  • React-i18next 出现错误尝试导入错误

    我尝试使用https react i18next com https react i18next com 对于本地化 我收到错误 尝试导入错误 initReactI18next 未从 react i18next 导出 这是我的 i18n j
  • 在操作调用源自的视图中处理 Redux Saga 结果

    我是 Redux Saga 的新手 来自 Redux Thunk 在某些情况下 我需要从调用操作的视图内部了解 API 调用是失败还是成功 使用 Redux Thunk 我会执行以下操作 我的组件和动作创建者看起来像这样 class MyC
  • 让 webpack 热更新在我的同构 Web 应用程序中正常工作

    我正在创建一个带有 Node Express 后端和 React 前端的 Web 应用程序 我 我认为 大部分内容都已启动并运行 但让浏览器执行热刷新的最后一步并未按预期工作 我会尝试在这里发布所有相关设置 如果您需要其他任何信息来找出我哪

随机推荐