React引入react-remixicon后remixicon.woff2报404错误如何解决
问题修复方案
remixicon.woff2返回404的核心原因是图标字体静态资源未被正确加载,和你从MySQL读取图标参数传参的业务逻辑无关,按以下步骤排查修复即可:
- 第一步:补装底层字体依赖
多数人只安装了react封装组件,漏了remixicon核心字体资源包,在项目根目录执行安装命令:# npm 用户 npm install remixicon --save # yarn 用户 yarn add remixicon - 第二步:全局引入字体样式
不要只单独引入Icon组件,需要在项目入口文件(通常是src/main.jsx/src/index.js)全局引入一次remixicon的样式文件,让构建工具能识别到字体资源路径:import React from 'react' import ReactDOM from 'react-dom/client' // 新增这行引入字体样式 import 'remixicon/fonts/remixicon.css' import App from './App' ReactDOM.createRoot(document.getElementById('root')).render(<App />)注意:样式文件只需要在全局入口引入一次即可,不需要在每个业务组件重复引入。
- 第三步:排查构建路径配置
如果做完前两步还报404,检查构建工具的资源路径配置:- Vite项目:打开
vite.config.js,确认base配置和项目实际部署路径一致,比如项目部署在站点的/admin子路径下,base就要设置为'/admin/',否则构建后字体会默认往站点根路径查找,触发404 - 自定义Webpack项目:确认配置中已经添加了woff、woff2后缀静态资源的处理规则,用
file-loader或者asset/resource类型处理这类字体文件即可,Create React App默认已经内置该规则,如果没有手动修改过webpack配置可以跳过这步
- Vite项目:打开
- 额外逻辑优化
你当前写的条件渲染逻辑有漏洞:当menu_icon和menu_icon_type只存在一个空值时,会同时渲染传入参数的Icon和默认的home图标,建议改成三元判断的写法更严谨:
修复后可以先用默认的{ item.menu_icon && item.menu_icon_type ? <Icon name={item.menu_icon} type={item.menu_icon_type} /> : <Icon name='home-3' type='line' /> }home-3 line图标测试资源加载状态,确认woff2不再报404后,再核对数据库存储的图标名、type值是否和remixicon官方命名规范匹配即可。
内容的提问来源于stack exchange,提问作者syrine
相关产品推荐
相关产品推荐

