reactjs - 如何在 React 中导入 svg 文件?
问题描述
我有一个自定义的 React + Typescript + Webpack 项目。我需要导入一个简单的 .svg 文件并在组件中使用它。打字稿声称它:
找不到模块
我已经安装了 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"] },
],
},
我的组件
import React, { useEffect } from "react";
import Account from "./account.svg";
export default function Icon({ icon }) {
return (
<div>
<Account/>
</div>
);
}
custom.d.ts
declare module "*.svg" {
const content: any;
export default content;
}
// added to tsconfig.json
"include": ["./src/**/*", "./custom.d.ts"],
svg 是一个简单的<svg><path blabla/></svg>
文件。
如何解决这个问题?
解决方案
我有同样的问题,我在这里找到了解决方案。
我个人使用了这种方法:
我将我的徽标导入为 ReactComponent。
然后我在我的代码中使用它:)
import React from "react";
import { ReactComponent as MySvgFile } from "path/to/file.svg";
export default function MyComponent() {
return (
<div>
<MySvgFile />
</div>
);
}
推荐阅读
- go - 通知 golongpoll.SubscriptionManager 来自 kafka-go 的事件
- python - Spyder 4 不显示绘图并显示类似“在绘图窗格选项菜单下取消选中“静音内联绘图”的消息。
- html - 如何在 Angular mat-icon 中抑制 SVG 的标题工具提示?
- regex - 用scala中的其他字符替换转义字符
- azure - 如何获取 Azure DevOps 当前迭代的开始日期?
- java - 如何在 JavaFX MVMM 应用程序中正确实现多线程
- android - 如何将视图约束到另一个布局文件中的视图?
- javascript - 如何使用 Google 应用脚本复制和粘贴“Over the Cells”图像?
- logstash - 用于单词提取的 Logstash 配置
- flutter - 增加 Flutter Radio Widget 大小