You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React项目中<img>元素路径设置及嵌套路由下的路径问题解惑

为什么React Router嵌套路由后,相对路径的SVG图标加载失败?

这本质是浏览器对相对路径和绝对路径的解析逻辑差异,再结合React项目public文件夹的资源访问规则导致的,拆解来看:

  • 先明确React public文件夹的资源规则

React项目里,public目录下的文件会直接部署到服务器的根目录(比如域名后的/),所以你存在public/icons/dashboard-sidebar-toggler.svg的图标,实际可访问的路径是[你的域名]/icons/dashboard-sidebar-toggler.svg。

  • 相对路径./icons/xxx.svg为什么失效?

浏览器解析相对路径时,是基于当前页面的URL路径层级来定位资源的:

  • 原来路由是/appeal_edit_page时,页面URL是[域名]/appeal_edit_page,浏览器会把当前路径当成一个“目录”,此时./icons/xxx.svg会被解析成[域名]/appeal_edit_page/icons/xxx.svg——但你的图标根本不在这个路径下,自然加载失败。

  • 改成嵌套路由/dashboard/appeal_edit_page后,页面URL变成[域名]/dashboard/appeal_edit_page,相对路径会被解析为[域名]/dashboard/appeal_edit_page/icons/xxx.svg,还是找不到正确的资源位置。

  • 绝对路径/icons/xxx.svg为什么正常?

以/开头的路径是根相对路径,浏览器会直接从服务器的根目录开始查找资源,也就是精准匹配到[域名]/icons/dashboard-sidebar-toggler.svg,正好对应public文件夹下的图标位置,所以能正常加载。

内容的提问来源于stack exchange,提问作者Fuaad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 11:40:29