Добавление svgr в приложение create-react-app через craco

Я хочу использовать плагин svgr webpack с приложением create- react -app, чтобы использовать SVG с SvgIcon MaterialUI.Я использую 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?

1 ответ

Решение

Похоже, CRA по умолчанию поддерживает преобразование SVG, что делает craco+svgr избыточным.

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

GoogleLogo теперь компонент.

ReactComponent - обязательная магическая строка.

Другие вопросы по тегам