storybook/ addon react-router-dom
42
投稿した質問数 8
// package.json
npm list로 확인 결과
react-router@7.13.1
storybook-addon-remix-react-router@6.1.0
react@19.2.4
storybook@10.2.17강의에 있는 내용을 토대로 typescript로 쇼핑몰 storybook 테스트를 진행 중에 React Router pannel에 로깅이 찍히지 않습니다.
github, storybook docs
참고하면서 해봐도 해결이 되지를 않는데...
제 코드는 아래와 같습니다.
.storybook/main.ts
// .storybook/main.ts
import type { StorybookConfig } from "@storybook/react-vite";
const config: StorybookConfig = {
stories: ["../src/**/*.mdx", "../src/**/*.stories.@(js|jsx|mjs|ts|tsx)"],
addons: [
"@chromatic-com/storybook",
"@storybook/addon-vitest",
"@storybook/addon-a11y",
"@storybook/addon-docs",
"storybook-addon-remix-react-router",
],
framework: "@storybook/react-vite",
};
export default config;
.storybook/preview.tsx
import type { Preview } from "@storybook/react-vite";
import { withRouter } from "storybook-addon-remix-react-router";
const preview: Preview = {
tags: ["autodocs"],
parameters: {
controls: {
matchers: {
color: /(background|color)$/i,
date: /Date$/i,
},
},
a11y: {
// 'todo' - show a11y violations in the test UI only
// 'error' - fail CI on a11y violations
// 'off' - skip a11y checks entirely
test: "todo",
},
},
decorators: [withRouter],
};
export default preview;
EmptyNotice.tsx
import type { MouseEvent } from "react";
import { useNavigate } from "react-router";
const EmptyNotice = () => {
const navigate = useNavigate();
const handleClickBack = (event: MouseEvent<HTMLButtonElement>) => {
event.preventDefault();
navigate("/");
};
return (
<div
style={{
display: "flex",
justifyContent: "center",
height: 400,
alignItems: "center",
flexDirection: "column",
}}
>
<p style={{ fontSize: "50px", fontWeight: 300 }}>텅~</p>
<button onClick={handleClickBack} style={{ cursor: "pointer" }}>
홈으로 가기
</button>
</div>
);
};
export default EmptyNotice;
EmptyNotice.stories.tsx
import type { Meta, StoryObj } from "@storybook/react-vite";
import EmptyNotice from "./EmptyNotice";
const meta = {
title: "장바구니/EmptyNotice",
component: EmptyNotice,
} satisfies Meta<typeof EmptyNotice>;
export default meta;
type Story = StoryObj<typeof meta>;
export const Default: Story = {
name: "장바구니가 빈 경우",
};

AI하고 문답하면서 디버깅 하는데 좀처럼 원인을 못찾겠어서 질문올립니다.
回答 1
0
안녕하세요, 인프런 AI 인턴입니다. Coi님.
제시해주신 코드와 오류 내용에서 React Router 패널이 제대로 로그를 찍지 않는 문제를 겪고 계신 것 같습니다. Storybook에서 storybook-addon-remix-react-router을 사용할 때, 특정 상황에서는 라우터 설정이나 Provider 중 누락된 부분이 있을 수 있습니다. 다음과 같은 방법들을 따라 점검해 주세요.
1. Addon 설정 확인
현재 storybook-addon-remix-react-router가 addon에 포함되어 있으니 설정 자체는 맞는 것으로 보입니다. 다만, 아래 설정이 누락되지 않았는지 확인해 보세요.
2. Provider 추가 여부 확인
Storybook에서 React Router를 이용할 때는 BrowserRouter 또는 적절한 라우터 Provider로 컴포넌트를 래핑해야 합니다. preview.tsx에 라우터 Provider를 추가한 후 데코레이터로 사용해 보세요:
// .storybook/preview.tsx
import type { Preview } from "@storybook/react-vite";
import { withRouter } from "storybook-addon-remix-react-router";
import { BrowserRouter } from "react-router-dom";
const preview: Preview = {
tags: ["autodocs"],
parameters: {
controls: {
matchers: {
color: /(background|color)$/i,
date: /Date$/i,
},
},
a11y: {
test: "todo",
},
},
decorators: [
(Story) => (
<BrowserRouter>
<Story />
</BrowserRouter>
),
withRouter,
],
};
export default preview;
3. Storybook 호환성 확인
각종 라이브러리의 버전 충돌이나 호환성 문제가 있을 수 있습니다. storybook-addon-remix-react-router, react-router, 그리고 storybook의 버전이 호환되는지 공식 문서를 참조하여 확인해 보세요.
4. 문서 참고
공식 문서에도 언급된 예제를 적용하여 제대로 작동하는지 확인해 볼 가치가 있습니다. 아래 링크는 storybook-addon-remix-react-router의 공식 문서 페이지입니다:
- storybook-addon-remix-react-router 문서
해당 정보가 문제를 해결하는데 도움이 되었으면 좋겠습니다. Storybook과 관련한 다양한 설정 옵션이 있으니, 필요하시다면 추가 정보를 통해 더욱 깊이 파악해 보셔도 좋습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
환불 요청
0
28
2
3강 질문
0
18
1
74. 데이터 캐시 - 1 (이론) 강의 영상 누락
0
26
1
2강 nodejs 3단계 설명 질문
0
33
1
imagesLoaded에 관한 질문
0
19
2
useEffect와 lifecycle문의
0
26
2
프론트엔드 학습 수준 문의
0
37
2
리액트 챕터별 코드에서 eslint 설정파일이 없어요
0
47
2
UserService, CertificationService 책임 분리 기준 질문
0
26
1
최근 코테, 과제 테스트 트렌드
0
67
2
lucide react 아이콘 설치
0
46
2
17강 zustand store 서버에서 생성
1
36
1
레이어드 아키텍처에서 도메인 중심 패키지 구조를 적용하거나 변화하는 시점이 있을까요?
1
40
2
문의관련 문의
0
44
2
next.js 를 2대이상 실행하는 경우 제공하는 cache 기능들은 어떻게 되나요?
0
55
2
76. 전문성 더하기: 놓치면 아쉬운 관련 기술들 수업 자료가 없어요.
0
47
2
AvailableUsers
0
41
1
e2e 테스트 CI , 서버비용
0
72
1
Retry-ability와 커스텀 커맨드, 커스텀 쿼리 질문
0
148
1
브랜치 git clone 질문
0
132
1
unit-test-example 브랜치에서 'Test result not found.' 가 뜹니다...
0
180
1
4.3 테스트 질문 입니다
0
191
1
5.2 테스트에서 상품 이름 사용, 로그인 세션 질문
1
234
1
5.3 cy.intercept 질문
0
179
1

