Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- backend
- springboot
- JPA
- java
- go
- typescript
- Gin
- css
- storybook
- ReactHooks
- test
- hook
- 오블완
- Spring
- Redux
- golang
- 티스토리챌린지
- JavaSpring
- tanstackquery
- RTK
- React
- Chakra
- 웹애플리케이션서버
- satisfiles
- react-hook-form
- javascript
- frontend
- designpatterns
- component
Archives
- Today
- Total
bkdragon's log
Storybook Decorator 로 전역 상태 사용하기 본문
공식문서에서는 Decorator 는 Story 을 감싸는 것이라고 설명한다.
Decorator 를 사용하면 레이아웃을 잡거나 Story 에서 특정 컨텍스트를 공유하게 하는 것이 가능하다.
zustand 전역 상태가 불필요하게 모든 Story가 아닌 특정 story 내에서만 유지되게 해보자.
export const Default: Story = {
name: "Default",
parameters: {
withZustand : true
},
};
parameters 에 withZustand 라는 임의의 키를 추가하고 true 값을 설정해줬다.
import { useEffect } from "react";
import { useStore } from "@/hooks/useStore";
import { Decorator } from "@storybook/react";
export const withZustand: Decorator = (Story, context) => {
const resetStore = useSystemTabStore((state) => state.reset);
useEffect(() => {
if (context.parameters?.withZustand) {
resetStore();
} else {
localStorage.removeItem("zustand-store");
}
}, [context.parameters.withTabStore, resetStore]);
return <Story {...context} />;
};
withZustand 가 true 인 스토리 일 때 초기값을 설정해주고, 아닐 때는 삭제한다.
Decorator 적용은 전역적으로도 가능하고 특정 스토리에도 가능하다.
.storybook/preview.ts 에서 전역적으로 설정할 수 있다.
import type { Preview } from "@storybook/react";
import "@/main.css";
import { withZustand } from "../src/stories/decorators/withZustand";
const preview: Preview = {
decorators: [withZustand],
parameters: {
controls: {
matchers: {
color: /(background|color)$/i,
date: /Date$/i,
},
},
},
};
export default preview;
'React' 카테고리의 다른 글
children 을 함수해서 동적으로 스타일을 지정하기 (0) | 2024.11.14 |
---|---|
드래그 가능한 모달창 만들기 (0) | 2024.11.11 |
합성 컴포넌트 패턴과 React Children API 를 활용한 컴포넌트 설계 (0) | 2024.10.31 |
Storybook 으로 협업하기 (1) | 2024.10.30 |
useReducer Action 객체 타입 (1) | 2024.10.08 |