React 代码 Import Svg as ReactComponent 失败
2021-05-09 18:06 muamaker 阅读(2794) 评论(0) 编辑 收藏 举报在 react 里面使用 svg
一、在 create-react-app 创建的项目中
方式 1、
1 2 3 4 | import logo from './logo.svg' ; <img src={logo} /> |
缺点在于不能在修改颜色,这里其实就是直接用 img 加载了 svg 文件
方式 2、
1 2 3 4 | import {ReactComponent as ComLogo} from './logo.svg' ; <ComLogo /> |
这里可以看见,实际上就是渲染了一个 SVG ,自定义的程度会很高。不过有版本需要:
react-scripts 版本要大于 @2.0.0
react 版本大于 @16.3.0
具体可以参考官方文档
二、自己从零开始配置的 webpack 项目
如果使用上面的第二种方式引入,发现竟然是 undefined , 进过研究发现需要一些配置。
注意 1、 typescript 项目 需要在项目根目录 加一个 custom.d.ts 文件声明。
写入:
1 2 3 4 5 6 | declare module '*.svg' { import React = require( 'react' ); export const ReactComponent: React.FunctionComponent<React.SVGProps<SVGSVGElement>>; const src: string; export default src; } |
然后在 tsconfig.json 中加入:
注意 2 、通过对 create-react-app 进行 eject , 查看配置发现,还需要给 webpack 加入配置:
1 2 3 4 5 6 7 8 9 10 | [ require.resolve( 'babel-plugin-named-asset-import' ), { loaderMap: { svg: { ReactComponent: '@svgr/webpack?-svgo,+ref![path]' , }, }, }, ], |
最后安装:
1 2 3 | yarn add babel-plugin-named-asset- import yarn add @svgr/webpack |
三、如果 在 create-react-app 使用了 @craco/craco 进行修改 webpack 配置。
那么一样需要安装
1 | @svgr/webpack<br><br>然后配置如下: |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | module.exports = { plugins: [ ], // ... 其他配置 webpack: { configure: (config, { env, paths }) => { // 需要在这里添加 config.module.rules.push({ test: /\.svg$/, use: [ "@svgr/webpack" ] }); return config; } } }; |
1 | <br><br><br> |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
2019-05-09 javascript 的惯性运动