React TS 스토리북: 스토리에서 커스텀 소품 사용하기
React TS Storybook: Appending Custom Props to a Story
아래와 같은 목록 구성 요소가 있다고 가정해 보겠습니다.
import { HTMLAttributes } from "react";
const List = ({ children, ...props }: HTMLAttributes<HTMLUListElement>) => {
return <ul {...props}>{children}</ul>;
};
const ListItem = ({ children, ...props }: HTMLAttributes<HTMLLIElement>) => {
return <li {...props}>{children}</li>;
};
List.Item = ListItem;
export default List;
그리고
List.Item
를 List
의 자식으로 추가하는 방법을 설명하기 위해 itemCount
List.Item
가 몇 개나 있는지 사용자 지정 소품List
을 추가합니다.import { useMemo } from "react";
import { ComponentStory, ComponentMeta } from "@storybook/react";
import List from "./List";
export default {
title: "Example/List",
component: List,
args: {
itemCount: 1,
},
argTypes: {
itemCount: { control: "number" },
},
} as ComponentMeta<typeof List>;
const Template: ComponentStory<typeof List> = ({ itemCount, ...args }) => {
const liComponents = useMemo(() => {
const components = [];
for (let i = 1; i <= itemCount; i++) {
components.push(<List.Item>{i} Item</List.Item>);
}
return components;
}, [itemCount]);
return <List {...args}>{liComponents}</List>;
};
export const ListExample = Template.bind({});
사용자 지정 소품을 사용하려고 하면 다음과 같은 오류 메시지가 표시됩니다.
Property 'itemCount' does not exist on type '[Component's Props]'.
.이 경우
Meta
및 Story
대신 ComponentMeta
및 ComponentStory
를 사용하십시오.import { ComponentProps, useMemo } from "react";
import { Story, Meta } from "@storybook/react";
import List from "./List";
type CustomListProps = ComponentProps<typeof List> & { itemCount: number };
export default {
title: "Example/List",
component: List,
args: {
itemCount: 1,
},
argTypes: {
itemCount: { control: "number" },
},
} as Meta<CustomListProps>;
const Template: Story<CustomListProps> = ({ itemCount, ...args }) => {
const liComponents = useMemo(() => {
const components = [];
for (let i = 1; i <= itemCount; i++) {
components.push(<List.Item>{i} Item</List.Item>);
}
return components;
}, [itemCount]);
return <List {...args}>{liComponents}</List>;
};
export const ListExample = Template.bind({});
유니온 연산자로 새로운 커스텀 타입을 정의했고,
Meta
와 Story
를 제네릭 타입으로 사용했습니다.이제 웹사이트에서 이와 같이 값
itemCount
을 조정할 수 있습니다.나는 이것이 누군가에게 도움이되기를 바랍니다 :)
행복한 코딩!
Reference
이 문제에 관하여(React TS 스토리북: 스토리에서 커스텀 소품 사용하기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/lico/react-ts-storybook-using-custom-props-in-a-story-aco텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)