使用react-router-dom中的<NavLink>activeClassName样式不生效

问题

使用react-router-dom中的<NavLink>切换页面时activeClassName样式不生效

原因

本地react-router-dom包已经更新到最新6.0.0-beta.8版本,beta版本不稳定

解决方法1

由于beta版本不稳定,建议回到稳定版本V5.3.0

解决方法2

使用最新版本react-router-domV6.0.0以上,可以通过className和style属性进行修改active状态。

两个属性都是通过箭头函数接收到isActive参数值,最后className接收一个string返回值,style接收一个css样式数据返回值进行修改<NavLink>active状态样式。

className传值是string类型,则会默认给一个"active"

export interface NavLinkProps extends Omit<LinkProps, "className" | "style"> {
  caseSensitive?: boolean;
  className?: string | ((props: { isActive: boolean }) => string);
  end?: boolean;
  style?:
    | React.CSSProperties
    | ((props: { isActive: boolean }) => React.CSSProperties);
}

使用例子:

<NavLink
	to="."
	className={({ isActive }) =>
		"nav-link" + (isActive ? " highlighted" : " plain")
	}
>
 Home
</NavLink>

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
React Router是一个用于构建单页面应用程序的库。它提供了一种在React应用程序管理路由的方式。React Router DOM是React Router的一个扩展,用于在Web应用程序进行路由。 React Router DOM 5和React Router DOM 6之间有几个重要的区别: 1. 安装方式:React Router DOM 5使用npm包管理器进行安装,命令为`npm install react-router-dom`。而React Router DOM 6使用yarn进行安装,命令为`yarn add react-router-dom@next`。 2. 路由组件:在React Router DOM 5使用`<Route>`组件来定义路由。而在React Router DOM 6使用`<Route>`组件的替代方案`<Routes>`来定义路由。 3. 路由匹配方式:React Router DOM 5使用基于路径的匹配方式来确定哪个路由应该被渲染。而React Router DOM 6引入了新的匹配方式,称为元素匹配(element matching),它可以根据组件的类型来匹配路由。 4. 嵌套路由:在React Router DOM 5,嵌套路由需要使用嵌套的`<Route>`组件来定义。而在React Router DOM 6,可以使用嵌套的`<Routes>`组件来定义嵌套路由。 5. 动态路由:在React Router DOM 5,可以通过在路径使用参数来定义动态路由。而在React Router DOM 6,可以使用`<Route>`组件的新属性`element`来定义动态路由。 6. 错误处理:React Router DOM 5使用`<Switch>`组件来处理路由匹配错误。而React Router DOM 6使用`<Routes>`组件的新属性`fallback`来处理路由匹配错误。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值