我有一个使用 Next.js 和 MaterialUI 的应用程序。为了让 Link 组件与 MaterialUI 一起正常工作,我有一个特殊的Link
组件,如下所示:
function Link(props) {
const {
href,
activeClassName = 'active',
className: classNameProps,
innerRef,
naked,
prefetch,
...other
} = props;
const router = useRouter();
const pathname = typeof href === 'string' ? href : href.pathname;
const className = clsx(classNameProps, {
[activeClassName]: router.pathname === pathname && activeClassName
});
if (naked) {
return (
<NextComposed
className={className}
ref={innerRef}
href={href}
prefetch={prefetch}
{...other}
/>
);
}
return (
<MuiLink component={NextComposed} className={className} ref={innerRef} href={href} {...other} />
);
}
当我需要它时,这绝对可以正常工作。但是,当我开始将组件(使用此链接)添加到 Storybook 时,出现错误:
Uncaught TypeError: Cannot read property 'pathname' of null
at Link
我添加到 Storybook 的组件中的链接使用示例:
const MyComponent = (props) => (<Button
className={classes.loginButton}
disableRipple
edge="end"
variant="contained"
color="secondary"
component={Link}
naked
href="/login"
>
Login
</Button>)
当我尝试使用 console.log() 路由器时,我确实得到了 null,这很奇怪。我在这里做错了什么?