首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么React路由器NavLink支柱精确(v5)与末端(v6)在url中拖尾斜线导致不同的结果

为什么React路由器NavLink支柱精确(v5)与末端(v6)在url中拖尾斜线导致不同的结果
EN

Stack Overflow用户
提问于 2022-01-01 16:25:52
回答 1查看 1.7K关注 0票数 7

在React路由器版本5中,我有一个NavLink,它看上去如下所示:

代码语言:javascript
复制
<NavLink
  to="/notes"
  exact={true}
  className="border-transparent text-gray-600 hover:bg-gray-50 hover:border-gray-300 hover:text-gray-800 block pl-3 pr-4 py-2 border-l-4 text-base font-medium"
  activeClassName="bg-indigo-50 border-indigo-500 text-indigo-700 block pl-3 pr-4 py-2 border-l-4 text-base font-medium"
>
  Home
</NavLink>

它将带有尾随斜杠的localhost:3000/noteslocalhost:3000/notes/识别为活动urls。

在React路由器版本6中,我将其重构为以下内容:

代码语言:javascript
复制
<NavLink
  to="/notes" end
  className={(navData) =>
  navData.isActive
    ? "bg-indigo-50 border-indigo-500 text-indigo-700 block pl-3 pr-4 py-2 border-l-4 text-base font-medium"
    : "border-transparent text-gray-600 hover:bg-gray-50 hover:border-gray-300 hover:text-gray-800 block pl-3 pr-4 py-2 border-l-4 text-base font-medium"
  }
>
  Home
</NavLink>

这只会识别localhost:3000/notes为活动url。

在v6中是否有一种方法可以将尾随斜杠识别为活动url的版本?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-01 21:04:22

我认为您混淆了react-router-dom v5 exact道具所代表的东西,或者更确切地说,混淆了exactstrict道具之间的行为。

v5

  • exact:时,只有当位置与exactly.
  • strict:匹配时,才会应用活动类/样式。在确定位置是否与当前的URL匹配时,将考虑到位置路径名上的尾随斜杠。有关更多information.

,请参见文档

注意,关于精确匹配的重点是我的。

v6

react-router-dom版本6中,所有的路由/链接总是完全匹配的。与路由匹配相比,end NavLink的支柱更多地与尾随斜杠"/"有关。

如果使用end支柱,它将确保该组件在其后代路径匹配时不匹配为"active“。例如,若要呈现仅在网站根目录下活动的链接,而不呈现任何其他URL,您可以使用:

首页

来回答你的问题

为什么反应路由器NavLink支柱精确(v5)和末端(v6)导致不同的结果在url中尾随斜线。

这是因为你把苹果比作橘子。如果您想实现从v5到v6与尾随斜杠"/"的相同链接行为,那么忽略end支柱。

代码语言:javascript
复制
<NavLink
  to="/notes"
  className={(navData) =>
    navData.isActive
      ? "bg-indigo-50 border-indigo-500 text-indigo-700 block pl-3 pr-4 py-2 border-l-4 text-base font-medium"
      : "border-transparent text-gray-600 hover:bg-gray-50 hover:border-gray-300 hover:text-gray-800 block pl-3 pr-4 py-2 border-l-4 text-base font-medium"
  }
>
  Home
</NavLink>

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70550172

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档