我正在try 使我的嵌套路由选项卡在第一次显示时处于活动状态,但除非单击,否则它不会变为活动状态.如果我更改了任何内容,父路由将变为非活动状态.

App.js

<Route path="account" element={<Account />}>
  <Route index element={<Profile />} />
  <Route path="profile" element={<Profile />} />
  <Route path="key" element={<Key />} />
</Route>

我之所以将配置文件作为索引,是因为我希望当用户从左侧导航到"/account"时,该选项卡作为默认选项卡打开.

LeftNav.js

<NavLink to='account' className="nav-link" activeClassName="active">
  <span>Account</span>
</NavLink

默认情况下,配置文件组件是加载的,这很好,但我有另一个选项卡可以在配置文件和键之间切换,这就是配置文件不突出显示/激活的地方.

Account.js

<div>
  <Header title="Account" />
  <div>
    <NavAccount />
  </div>
</div>

Js是为用户显示嵌套路由交换器的页面.

NavAccount.js

<div>
  <div>
    <ul className="nav nav-tabs" role="tablist">
      <li className="nav-item">
        <NavLink
          to='profile'
          className="nav-link"
          id='profileTab'
          data-bs-toggle="pill"
          activeclassname="active"
        >
          <span>Profile</span>
        </NavLink>
      </li>
      <li className="nav-item">
        <NavLink
          to='key'
          className="nav-link"
          id='apiKeyTab'
          data-bs-toggle="pill"
          activeclassname="active"
        >
          <span>API Key</span>
        </NavLink>
      </li>
    </ul>
  </div>  
  <Outlet />
</div>

正如您在下面看到的,配置文件选项卡第一次显示时,直到单击它才处于活动状态.

enter image description here

我try 过的事情:

  • 我将LeftNav.js中的Navlink改为to='account/profile',但当我点击API Key选项卡时,父路由(在左侧导航中)变为非活动状态.

推荐答案

我正在try 使嵌套路径选项卡在首次显示时处于活动状态 但除非单击,否则它不会变为活动状态.

根据我对这一点和代码的理解,您似乎想要将"/account/profile"路由设置为"默认"路由,这样当通过左侧导航导航到"/account"时,Profile页面将处于"活动"状态.为此,您可以在"/account"索引路由上呈现到"/account/profile"的重定向.

  • LeftNav"/account"链路将处于活动状态,因为它位于任何"/account/*"路径上
  • NavAccount中的"/account/profile"链路将处于活动状态,因为它是当前匹配的路径.
<Route path="account" element={<Account />}>
  <Route index element={<Navigate to="profile" replace />} />
  <Route path="profile" element={<Profile />} />
  <Route path="key" element={<Key />} />
</Route>

另外仅供参考,react-router-dom@6-NavLink组件没有任何activeClassNameprops ,它被移除了.默认情况下,RRDv6 NavLink会为匹配的路由应用"active" CSS类名.

<NavLink to='account' className="nav-link">
  <span>Account</span>
</NavLink>

如果您想为活动类使用different CSS类名,则使用className属性的函数回调形式.

<NavLink
  to='account'
  className={({ isActive }) => 
    ["nav-link", isActive ? "active-nav-link" : null]
      .filter(Boolean)
      .join(" ")
  }
>
  <span>Account</span>
</NavLink>

Javascript相关问答推荐

如何从对象嵌套数组的第二级对象中过滤出键

RxJS setTimeout操作符等效

react/redux中的formData在expressjs中返回未定义的req.params.id

django无法解析余数:[0] from carray[0]'

Google图表时间轴—更改hAxis文本 colored颜色

如何从JSON数组添加Google Maps标记—或者如何为数组添加参数到标记构造器

拖放仅通过 Select 上传

Phaser 3 console. log()特定游戏角色的瓷砖属性

将自定义排序应用于角形数字数组

Angular material 拖放堆叠的牌副,悬停时自动展开&

如何将Openjphjs与next.js一起使用?

Websocket错误—有一个或多个保留位开启:reserved1 = 1,reserved2 = 0,reserved3 = 0

以Angular 实现ng-Circle-Progress时出错:模块没有导出的成员

当标题被点击时,如何使内容出现在另一个div上?

在Odoo中如何以编程方式在POS中添加产品

在渲染turbo流之后滚动到元素

TypeORM QueryBuilder限制联接到一条记录

我如何才能获得价值观察家&对象&S的价值?

更改管线时不渲染组件的react

Rails 7:在不使用导入映射的情况下导入Java脚本