5

我想将svgr 的 webpack 插件与 create-react-app 一起使用,以将 SVG 与 MaterialUI 的 SvgIcon 一起使用。我正在使用craco将 svgr 添加到 Webpack 的配置中。

目前,无论何时应该渲染 SVG,都会引发以下错误:

Failed to execute 'createElement' on 'Document': The tag name provided ('static/media/googlelogo.03ad8507.svg') is not a valid name.

我的 craco.config.js:

const CracoAlias = require("craco-alias");

module.exports = {
  plugins: [
    {
      plugin: CracoAlias,
      options: {
        baseUrl: "./src",
        tsConfigPath: "./tsconfig.extend.json",
        source: "tsconfig"
      }
    }
  ],
  webpack: {
    configure: (config, { env, paths }) => {
      config.module.rules.push({
        test: /\.svg$/,
        use: ["@svgr/webpack"]
      });
      return config;
    }
  }
};

如何正确嵌入 SVG?

4

1 回答 1

20

看起来 CRA 默认支持转换 SVG,从而使 craco+svgr 变得多余。

import { ReactComponent as GoogleLogo } from "../assets/images/googlelogo.svg";

GoogleLogo现在是一个组件。

ReactComponent是必需的魔术字符串。

于 2020-02-05T11:02:04.927 回答