当前位置: 首页 > 面试题库 >

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

孔砚
2023-03-14
问题内容

我想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-loaderimg-loaderurl-loaderfile-loadersvg- loader,但我不能找到正确的方式来做到这一点。


问题答案:

由于您的SVG内容存储为字符串而不是React元素,因此您需要使用Dangerously Set
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文件时自动为您执行此操作。

危险地SetInnerHTML.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>
    )
  }
});


 类似资料:
  • 我无法在React组件中显示图像。经过多次尝试(尝试了这个,这个,这个,这个,这个,这个和这个)和错误之后,我请求帮助。我正在开发构建(不是生产构建)。 我仍然得到这个错误: 组成部分 网页包配置: 目录结构 如何显示图像? 这里的示例代码: githublink查看 /src/components/home/HomePage.js 我可以做些什么来查看主页上的图像?

  • 问题内容: 我有以下脚本文件 我遵循这个在React /JSX中添加脚本标签的方法,)但是对我来说不起作用… 如何在我的react组件中加载脚本? 问题答案: 经过大量的研发,终于找到了解决方案。 我曾经 在React组件中加载脚本

  • 当我启动应用程序时,我没有看到任何错误,但是是一个空数组。组件本身位于。我试着直接加载图像: 但无论我指定的路径是什么,如果出现错误,它就不能正常工作了。但是,我需要从文件夹加载所有图像,而不是静态加载,因为我事先不知道图像的名称。如有任何建议,将不胜感激。

  • 本文向大家介绍react开发中如何使用require.ensure加载es6风格的组件,包括了react开发中如何使用require.ensure加载es6风格的组件的使用技巧和注意事项,需要的朋友参考一下 其实用的babel,在浏览器端就应该可以加载,之前少了个default: 以下方式也可以,但是比较low,可以作废了: 1、问题提出:想通过require.ensure加载es6风格的模块?

  • 我发现这篇文章有类似的问题,但没有帮助。谷歌地图标记作为Reactjs组件 在我的数据库中,我存储了一些纬度和经度值。我在模型中检索这些值,以便为用户显示一些数据。我将这些值发送到一个简单的GoogleMaps组件,该组件是我根据本教程创建的https://tomchentw.github.io/react-google-maps/#introduction 组件从"道具"接收"模型",我得到这些

  • 问题内容: 在react项目中使用bootstrap时,运行dev环境工作正常。但是当我为软件包项目运行npm build时。显示引导字体错误。 我的Webpack配置 引导程序版本: 问题答案: 我遇到了一个解决方案: webpack.config.js 确保安装所有这些装载机 在此导入引导程序中后,您将文件另存为

  • 问题内容: 我在玩和使用和。我想在不同的文件中构建多个组件,将其导入单个文件并将其捆绑在一起 假设我有几个这样的组件: my-navbar.jsx main-page.jsx 使用webpack并按照其教程进行操作,我有: 构建项目并运行它之后,在浏览器控制台中出现以下错误: 我究竟做错了什么?如何正确导入和导出组件? 问题答案: 尝试 默认设置 组件中的导出: 通过使用默认值,您表示将成为该模块

  • 问题内容: 我试图在ES6中使用有状态的React组件,但是当我定义一个构造函数时,在多次渲染该组件(从其父对象)时,构造函数将仅被调用一次。示例如下所示。 这不会更新渲染的输出(它将始终为),但是日志将输出: 这是一个JSFiddle:http : //jsfiddle.net/jor0xu1a/1/ 我知道该示例不需要状态,但是我尝试使其尽可能简单以显示我的问题。 我想念什么? 问题答案: 我