在 React Router 中为 Link 或 IndexLink 的包装元素设置 activeClassName

阅读时长 4 分钟读完

React Router 是一个用于构建单页面应用的流行库。在 React Router 中,我们使用 LinkIndexLink 组件来实现应用程序中的导航链接。通过这些组件,我们可以以一种声明性的方式定义路由,并在用户与应用程序交互时动态地更新页面内容。

在某些情况下,我们可能希望在激活链接时为链接的包装元素添加一个 CSS 类。例如,在菜单中高亮显示当前所选项,或者在面包屑导航中突出显示当前页面。

幸运的是,React Router 允许我们轻松地为 LinkIndexLink 的包装元素设置自定义类名。在这篇文章中,我们将学习如何在 React Router 中实现这个功能。

设置激活类名

在 React Router 中,我们可以使用 activeClassName 属性来为链接的包装元素设置自定义类名。当链接与当前路由匹配时,React Router 将自动为其包装元素添加指定的类名。

下面是一个简单的示例,演示如何为 Link 组件设置激活类名:

-- -------------------- ---- -------
------ - ---- - ---- -------------------

-------- ------------ -
  ------ -
    -----
      ----
        ----
          ----- ------ -------------------------
            --
          -------
        -----
        ----
          ----- ----------- -------------------------
            ----
          -------
        -----
        ----
          ----- ------------- -------------------------
            ----
          -------
        -----
      -----
    ------
  --
-

在上面的代码中,我们为每个 Link 组件添加了一个 activeClassName 属性,并将其设置为 "active"。当链接与当前路由匹配时,React Router 将自动为其包装元素添加名为 "active" 的类。

设置包装元素

默认情况下,React Router 在 LinkIndexLink 组件周围创建一个 a 元素或 div 元素的包装器。如果需要为其他类型的元素设置激活类名,则可以通过 wrapperComponent 属性进行自定义。

例如,假设我们希望在菜单中使用 li 元素作为链接的包装元素,并在当前选项上添加类名 "active"。我们可以使用以下代码:

-- -------------------- ---- -------
------ - ---- - ---- -------------------

-------- ------------ -
  ------ -
    -----
      ----
        -----
          ------
          ---------------------
          ------------------------
          -------------------- -------- -- -- --------------------
        -
          --
        -------
        -----
          -----------
          ---------------------
          ------------------------
          -------------------- -------- -- -- --------------------
        -
          ----
        -------
        -----
          -------------
          ---------------------
          ------------------------
          -------------------- -------- -- -- --------------------
        -
          ----
        -------
      -----
    ------
  --
-

在上面的代码中,我们使用 wrapperComponent 属性将 li 元素作为链接的包装元素,并将其传递给 Link 组件。当链接与当前路由匹配时,React Router 将自动添加 "active" 类名到 li 元素。

结论

通过设置 activeClassNamewrapperComponent 属性,我们可以轻松地为链接的包装元素添加自定义类名。这使得我们可以以一种简单而声明性的方式构建具有显示效果的导航菜单和其他 UI 元素。

希望本文能够帮助你在 React Router 中实现自定义链接样式!

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/27707

纠错
反馈