如何为带有插槽的以下组件添加一个精简的故事书故事。
纽扣<button>
<slot />
</button>
我可以用作哪个
<script>
import Button from './Button.svelte';
</script>
<Button>Hello World</Button>
如何为其中包含插槽的此类组件创建故事?
答案 0 :(得分:3)
根据官方故事书存储库中的example file。
如果我们需要在Svelte环境中测试组件,例如 测试插槽行为,然后将组件包装成一个视图 仅仅为了故事,是实现这一目标的最简单方法。
因此,暂时遵循此建议可能最容易。
<div class="flex-col">
<slot><!-- optional fallback --></slot>
</div>
<script lang="ts">
import Stack from './Stack.svelte'
</script>
<Stack>
<p>Slot 1</p>
<p>Slot 2</p>
<p>Slot 3</p>
</Stack>
import Stack from './StackView.svelte';
export default {
title: 'Stack',
component: Stack,
};
const Template = ({ ...args }) => ({
Component: Stack,
props: args,
});
export const Regular = Template.bind({});
也就是说,use svelte template syntax to write stories可能很快就会出现。我认为这样可以更优雅地解决问题。
答案 1 :(得分:0)
我使用 npx sb init 命令将故事书添加到我的 svelte 组件库中。下面的故事定义适用于我的 SuccessLabel 组件:
<!--SuccessLabel.svelte-->
<div>
<slot />
</div>
<style>
div {
position: relative;
color: white;
background-color: #28a745;
border-color: #28a745;
margin-top: -3px;
padding: 10px;
border-radius: 5px;
border-top-right-radius: 0px;
border-top-left-radius: 0px;
font-size: 12px;
}
</style>
<!--SuccessLabel.stories.svelte-->
<script>
import { Meta, Story } from "@storybook/addon-svelte-csf";
import SuccessLabel from "../src/components/labels/SuccessLabel.svelte";
</script>
<Meta title="Labels/SuccessLabel" component={SuccessLabel} />
<Story name="Default">
<SuccessLabel>This message should be shown</SuccessLabel>
</Story>