如何在 React 中导入 svg 文件?

Don*_*al0 5 import svg typescript reactjs webpack

我有一个自定义的 React + Typescript + Webpack 项目。我需要导入一个简单的 .svg 文件并在组件中使用它。Typescript 声称:

找不到模块

我已经安装了 svgr,将其添加到我的 webpack 配置中,创建了一个 custom.d.ts 文件,允许在 typescript 中导入 svg 并在 tsconfig.json 中指定它。没有任何效果(我暂时在 Storybook 中运行该组件)。

这是我的网页包:

 module: {
      rules: [
        {
          test: /\.(ts|js)x?$/,
          exclude: /node_modules/,
          use: { loader: "babel-loader" },
        },
        { test: /\.css$/, use: ["style-loader", "css-loader"] },
        { test: /\.svg$/, use: ["@svgr/webpack"] },
        { test: /\.(png|svg|jpg|gif)$/, use: ["file-loader"] },
      ],
    },
Run Code Online (Sandbox Code Playgroud)

我的组件

import React, { useEffect } from "react";
import Account from "./account.svg";

export default function Icon({ icon }) {
  return (
    <div>
      <Account/>
    </div>
  );
}
Run Code Online (Sandbox Code Playgroud)

定制.d.ts

declare module "*.svg" {
  const content: any;
  export default content;
}

// added to tsconfig.json
"include": ["./src/**/*", "./custom.d.ts"],
Run Code Online (Sandbox Code Playgroud)

svg 是一个简单的<svg><path blabla/></svg>文件。

如何解决这个问题?

Sac*_*not 3

我遇到了同样的问题,我在这里找到了解决方案。

我个人用过这个方法:

  1. 我将我的徽标导入为 ReactComponent。

  2. 然后我在我的代码中使用了它:)

import React from "react";
import { ReactComponent as MySvgFile } from "path/to/file.svg";

export default function MyComponent() {
  return (
    <div>
      <MySvgFile />
    </div>
  );
}
Run Code Online (Sandbox Code Playgroud)