You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Router中NavLink的activeStyle失效,显示[object object]求助

问题原因

你使用的是React Router v6版本,该版本已经移除了activeStyle属性。原代码中的activeStyle会被当作普通DOM属性处理,对象转成字符串后就显示为[object object],导致样式不生效且出现异常文本。

解决方案

React Router v6中,NavLink的激活样式需要通过style或className的回调函数实现,根据isActive状态动态设置:

方式1:使用style回调直接定义样式

修改NavLink代码如下:

<NavLink 
  to="/" 
  style={({ isActive }) => ({ 
    backgroundColor: isActive ? "white" : undefined 
  })}
>Home</NavLink>

<NavLink 
  to="/Contact" 
  style={({ isActive }) => ({ 
    backgroundColor: isActive ? "white" : undefined 
  })}
>Contact</NavLink>

方式2:使用className回调结合CSS类(推荐,更易维护)

先在CSS中定义样式类:

.nav-link {
  /* 导航链接默认样式 */
}
.nav-link.active {
  background-color: white;
}

再修改NavLink组件:

<NavLink 
  to="/" 
  className={({ isActive }) => isActive ? "nav-link active" : "nav-link"}
>Home</NavLink>

<NavLink 
  to="/Contact" 
  className={({ isActive }) => isActive ? "nav-link active" : "nav-link"}
>Contact</NavLink>

另外,React Router v6中<Route>的exact属性已被移除(Route默认就是精确匹配),可以删掉代码中的exact:

<Routes>
  <Route path="/" element={<Home />} />
  <Route path="/Contact" element={<Contact />} />
</Routes>

内容的提问来源于stack exchange,提问作者EBDS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 05:12:45