Shopify App bridge NavigationMenu点击菜单项后未正常激活问题咨询
Shopify Node应用模板的默认NavigationMenu组件,默认采用路径前缀匹配判断激活状态,所以访问/help时,根路径/会被误判为匹配,导致Home始终显示激活状态。
以下是几种可行的解决办法:
方法1:添加精确匹配标识
给每个导航项配置exact: true属性(组件原生支持该属性时可用),强制只匹配完全一致的路径:
<NavigationMenu navigationLinks={[ { label: "Home", destination: "/", exact: true }, { label: "Help", destination: "/help", exact: true } ]} />
方法2:手动控制激活状态
结合React Router的useLocation钩子,手动判断当前路由路径,给对应导航项设置激活状态:
import { useLocation } from 'react-router-dom'; // 在组件内部使用 const location = useLocation(); const navLinks = [ { label: "Home", destination: "/", isActive: location.pathname === "/" }, { label: "Help", destination: "/help", isActive: location.pathname === "/help" } ]; <NavigationMenu navigationLinks={navLinks} />
方法3:修改组件内部匹配逻辑
如果能找到NavigationMenu组件的源码,将原本的前缀匹配逻辑(比如pathname.startsWith(destination))替换为精确相等匹配:
// 原判断逻辑可能类似 const isActive = pathname.startsWith(destination); // 修改为精确匹配 const isActive = pathname === destination;
内容的提问来源于stack exchange,提问作者Vishnu Prasath
相关产品推荐
相关产品推荐

