javascript - 我可以使用动态 import() 表达式将 SVG 文件作为 react 组件导入吗?

标签 javascript reactjs typescript react-typescript

来自 this answer从stackoverflow,我得到了一个关于如何将svg作为ReactComponent导入并改变它们的颜色/宽度等的解决方案。
但是是否可以对动态导入做同样的事情?
我的功能组件:

import * as React from 'react';
import SvgIconComponent from './SvgIcon.Interface';

import {ReactComponent} from '*.svg';

const SvgIcon: React.FC<SvgIconComponent> =({width, color, name}) =>
{
    import(`../../assets/icons/${name}.svg`).then((Icon) => {
        return <Icon fill={color} width={width}/>
    });
};

export default SvgIcon;
在当前的实现中,我得到了错误:
TS2749: 'ReactComponent' refers to a value, but is being used as a type here. // .then((Icon as ReactComponent)

TS2604: JSX element type 'Icon' does not have any construct or call signatures. // .then(Icon)

最佳答案

我建议你使用process.env.PUBLIC_URL渲染你的 svg。将所有 svg 文件放入 public文件夹,假设在 public/svgFiles .
然后您可以将其用作<img src={process.env.PUBLIC_URL + "/svgFiles/" + file_name} alt="project" />由于公共(public)文件夹中的所有内容都包含在最终 build 中,您所有的 svg 文件以及您使用的路径都会得到处理,因为所有内容都将从公共(public)文件夹中引用,构建后路径不会更改。

关于javascript - 我可以使用动态 import() 表达式将 SVG 文件作为 react 组件导入吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71100587/

相关文章:

javascript - public.onChange = Function.prototype 的作用是什么?

javascript - 使用 Material Angular 10 的格式更改 Datepicker 的语言

javascript - NodeJS使用await/async读取谷歌电子表格中的值

javascript - window.open() 在 react 应用程序中不起作用

javascript - 如何在本地存储中存储标签值以及如何从本地存储中获取标签值?

javascript - 使用 React Native 显示来自 Firebase 的图像

javascript - 如何使用 Web Audio API 添加 LFO 来过滤截止

javascript - 使用 concat 更新 react 状态下的数组

javascript - jQuery UI .position() 错过了使用 jQuery .height() 设置的目标元素的高度

JavaScript 编码风格 : curly brace after multiline condition