react-router - 使用带有 babel-plugin-react-css-modules 的 React Router v6
问题描述
是否有人将 React Router v6 与 CSS 模块(或更准确地说,与babel-plugin-react-css-modules
)一起使用?
我不知道如何使用新语法为 NavLink 设置活动类。在 v6 之前,我可以重新映射activeStyleName
到activeClassName
模块的 Babel 配置中,仅此而已。在 v6 中,当我尝试使用styleName
on NavLink
(正确扩展 TS 声明NavLinkProps
)时,如下所示:
<NavLink styleName={({ isActive }) => (isActive ? 'active' : '')} to="/route">
Route
</NavLink>
它失败并出现一些模糊的错误:
Uncaught TypeError: styleNameValue.split is not a function
有没有人让它工作?我能想到的唯一选择是 CSS 模块的命名导入并通过它引用它,className
但它增加了很多冗长,我想避免。
UPD:目前,我正在通过NavLink
迁移文档中所述的自定义组件对其进行管理:
import * as React from "react";
import { NavLink as BaseNavLink } from "react-router-dom";
const NavLink = React.forwardRef(
({ activeClassName, activeStyle, ...props }, ref) => {
return (
<BaseNavLink
ref={ref}
{...props}
className={({ isActive }) =>
[
props.className,
isActive ? activeClassName : null
]
.filter(Boolean)
.join(" ")
}
style={({ isActive }) => ({
...props.style,
...(isActive ? activeStyle : null)
})}
/>
);
}
);
解决方案
推荐阅读
- java - 如何将 Mapstruct 与 Ad Hoc Setter 一起使用
- sql - 使用一张表过滤另一张表而不连接
- javascript - 更改 div 的背景颜色,如果它包含包含带有 jquery 的特定字符串的 href
- .net - .AsNoTracking() 不工作实体框架核心 5
- java - 使用特定注释对所有方法调用带注释的方面
- spring-boot - 使用 Spring Boot 插入 Post 方法
- ant - 如果目标目录不存在,Ant Move Task 是否会创建它?
- python - 如何在 CNN 评估期间存储错误的预测
- excel - 使用不存在的键访问 VBA 字典条目
- git - 如何修复损坏的 git 存储库