Metamask/Web3集成致React移动端应用崩溃,求改为外部链接方案
解决方案
先修正你之前代码的错误
你之前的代码里location.pathname()是错的,pathname是useLocation()返回对象的字符串属性,不是函数,应该写成location.pathname。不过这个思路本身没必要,因为核心问题是要把内部路由改成外部链接,直接从路由配置和导航入口改更彻底。
正确实现步骤
移除原有路由
把路由配置里的这条代码删掉:<Route path="thePage" element={<thePage />} />替换内部导航链接为外部链接
原来项目里所有指向/thePage的<Link>组件,都换成普通的<a>标签:<!-- 原来的内部链接 --> <Link to="/thePage">前往目标页面</Link> <!-- 改成外部链接 --> <a href="https://localhost:5174/thePage" target="_blank" rel="noopener noreferrer">前往目标页面</a>target="_blank":在新窗口打开(可选,根据需求调整)rel="noopener noreferrer":安全防注入,必须加
处理直接访问
/thePage路径的情况
如果用户直接在地址栏输入xxx.com/thePage,需要做跳转处理:
先写一个重定向组件:import { useEffect } from 'react'; export const ExternalRedirect = () => { useEffect(() => { // 跳转到外部地址 window.location.href = 'https://localhost:5174/thePage'; }, []); return <div>正在跳转...</div>; // 可选加载提示 };然后在路由配置里加这条兜底路由:
<Route path="thePage" element={<ExternalRedirect />} />这样用户直接访问
/thePage时,会自动跳转到外部地址,不会触发原来的崩溃组件。
额外提醒
- 开发环境用
localhost:5174没问题,上线时记得换成生产环境的实际域名 - 测试时一定要在移动端Safari/Chrome里验证,确保不会再出现崩溃问题
内容的提问来源于stack exchange,提问作者Bigboss01
相关产品推荐
相关产品推荐

