当前位置: 首页 > article >正文

React 项目引入 svg 图片为 undefined 情况

如下面这段代码,发现加载 tools 的时候, Icon 对应的 RotateRight 为 unfined, 但是svg图片的路径是正确的。

import { ReactComponent as RotateRight } from 'assets/images/xxx/icon_img_rotate+90_default.svg';

const tools = [
    {
      Icon: RotateRight,
      onClick: onRotateRight,
      type: 'rotateRight',
    }
]

原因:
Webpack 配置或缺少插件,我使用的是自定义 Webpack 配置,发现没有配置 @svgr/webpack 插件。

解决:

我使用的 版本是 “webpack”: “^4.41.5”,“react”: “^17.0.2”,下载兼容的@svgr/webpack插件版本。

yarn add @svgr/webpack@5 --dev

在 Webpack 配置中,配置 @svgr/webpack

const path = require('path');
const loaderUtils = require('loader-utils');

module.exports = {
  // 其他配置...

  module: {
    rules: [
      // 处理SVG图标为React组件的规则
      {
        test: /\.svg$/,
        issuer: /\.[jt]sx?$/, // 确保只对JSX/TSX文件中的SVG应用此规则
        use: [
          {
            loader: '@svgr/webpack',
            options: {
              svgoConfig: {
                plugins: [{ removeViewBox: false }],
              },
              // 你可以在这里添加更多 @svgr/webpack 的选项
            },
          },
        ],
      },

      // 如果你还想保持原来的SVG文件加载方式(例如,通过import引入作为URL)
      // 你可以添加另一个规则来处理这些情况:
      {
        test: /\.svg$/,
        exclude: /node_modules/,
        use: ['url-loader'], // 或者 file-loader, 根据你的需求选择
      },
    ],
  },

  // 其他配置...
};

如果使用的是 Babel 编译 JavaScript 文件,在 .babelrc 文件中配置下面代码

{
  "presets": ["@babel/preset-env", "@babel/preset-react"]
}

http://www.kler.cn/a/444443.html

相关文章:

  • SpringBoot自己写的maven项目-配置文件提示
  • java Kafka批量消费和单个消费消息
  • SQL 查询方式比较:子查询与自连接
  • LabVIEW与PLC点位控制及OPC通讯
  • 如何处理对象的状态变化?如何实现工厂模式?
  • 如何实现一套完整的CI/CD?
  • 当我用影刀AI Power做了一个旅游攻略小助手
  • 【Javaweb】第一篇上,什么是web?
  • 密码生成器:随机密码在线生成,保障您的数字安全
  • Unity3D实现迷宫Game(第一人称视角)
  • 从零开始学TiDB(6)深入学习Placement Driver(PD)
  • XXE靶场
  • 无人预见的人工智能创业大难题
  • 【第九节】Git 服务器搭建
  • ExcelVBA编程输出ColorIndex与对应颜色色谱
  • 在 Spring Boot 3 中实现基于角色的访问控制
  • 每天40分玩转Django:实操博客应用
  • 基于Matlab实现三维地球模型(源码)
  • 【Python】使用Selenium 操作浏览器 自动化测试 记录
  • ECharts柱状图-柱图32,附视频讲解与代码下载