React中如何用router.pathname.startsWith检测多个链接?
解决router.pathname多路径前缀检测问题
你之前的写法没用到startsWith()的正确参数规则——这个方法的第二个参数是检测的起始位置,不是备选的前缀字符串,所以你传的"/webinars/"会被自动转为数值(最终变成0,等价于默认起始位置),导致只会检测第一个前缀"/blogs/"。
要实现多前缀检测,你可以这么做:
- 把所有需要检测的前缀放到一个数组里
- 用数组的
some()方法遍历,对每个前缀调用startsWith(),只要有一个匹配就返回true
示例代码:
// 定义需要检测的前缀列表 const targetPrefixes = ["/blogs/", "/webinars/"]; // 检测当前路径是否匹配任意一个前缀 const isMatched = targetPrefixes.some(prefix => router.pathname.startsWith(prefix));
如果router.pathname是"/blogs/2024/tech"或者"/webinars/online-event"这类路径,isMatched会返回true;如果是"/about"这类不匹配的路径,则返回false。
内容的提问来源于stack exchange,提问作者Teik Cheah
相关产品推荐
相关产品推荐

