我一直在尝试在 Storybook 中使用 Next.js 中的 useRouter 钩子。但是,每次加载 Storybook 时,我都会收到“无法读取 null 的属性“路径名””。我该如何解决这个问题?
import { useRouter } from "next/router";
const NavStrip = () => {
const router = useRouter();
return (
...
<Link href="/dashboard" passHref>
<StyledLink active={router.pathname === "/dashboard"}>
...
</StyledLink>
</Link>
...
)
}
Run Code Online (Sandbox Code Playgroud)
NavStrip.stories.tsx
import React from "react";
import NavStrip from "./index";
export default {
component: NavStrip,
title: "NavStrip",
};
export const Default = () => <NavStrip />;
Run Code Online (Sandbox Code Playgroud)
您应该使用Storybook Addon Next Router。正如此答案所述,您需要Link在 Next 内运行并且 Storybook 不会加载 Next,因此此插件将为Router您模拟。
在我的配置中,我需要做的就是:
// .storybook/preview.js
import { withNextRouter } from 'storybook-addon-next-router';
export const decorators = [withNextRouter()]
Run Code Online (Sandbox Code Playgroud)
那应该解决它。
| 归档时间: |
|
| 查看次数: |
1824 次 |
| 最近记录: |