next.js - 如何在 Storybook 中使用 NextJS 的 'useRouter()' 钩子(Hook)

标签 next.js storybook

我一直在尝试在 Storybook 中使用 Next.js 中的 useRouter 钩子(Hook)。但是,每次加载 Storybook 时,我都会收到“无法读取 null 的属性“路径名””。我该如何解决这个问题?

import { useRouter } from "next/router";

const NavStrip = () => {
  const router = useRouter();

  return (
    ...
            <Link href="/dashboard" passHref>
              <StyledLink active={router.pathname === "/dashboard"}>
                ...
              </StyledLink>
            </Link>
    ...
         )
}

NavStrip.stories.tsx
import React from "react";
import NavStrip from "./index";

export default {
  component: NavStrip,
  title: "NavStrip",
};

export const Default = () => <NavStrip />;

最佳答案

您应该使用 Storybook Addon Next Router .如 this answer状态,你需要运行 Link在 Next 里面,Storybook 不会加载 Next,所以这个插件会模拟 Router为你。
在我的配置中,我需要做的就是:

// .storybook/preview.js
import { withNextRouter } from 'storybook-addon-next-router';

export const decorators = [withNextRouter()]
那应该解决它。

关于next.js - 如何在 Storybook 中使用 NextJS 的 'useRouter()' 钩子(Hook),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62138429/

相关文章:

next.js - next js如何处理页面加载缓慢的问题

performance - Google Chrome Lighthouse 报告中最大的内容绘制错误

javascript - Angular 故事书错误 : Cannot match any routes. URL 段: 'iframe.html'

css - 构建 Angular 库后无法将 SCSS 与 Storybook 一起使用

storybook - React 中 Storybook 中的模块加载问题(初始化前无法访问 'some_variable')

reactjs - Storybook 中的旋钮和控件之间的区别?

next.js - Nextjs Image "loader"属性未实现宽度的问题

reactjs - 构建 Docker 镜像时已安装 Typescript 时要求安装

next.js - AWS Amplify 对 Next js Image API 的支持

javascript - 故事书未显示样式