Umgang mit Slots in Vue3 und Storybook 7
P粉504920992
P粉504920992 2023-08-26 00:23:54
0
1
625
<p>Ich versuche, eine Komponente (UIButton) als Slot in einer anderen Komponente (UICard) in der ButtonAsSlot-Story zu übergeben. </p> <p>In der ButtonAsSlot-Story übergebe ich <code>default: '<uibutton v-bind="{type: 'button', isDisabled: false,variant: 'primary', label: 'test ',} ">',</uibutton></code> als args.default, sodass es im Slot übergeben wird. </p> <p>Wenn ich eine vorhandene Story übergeben könnte (z. B. <code>default: '<uibutton v-bind="ImportedStory.args">'</uibutton></code>), dann wäre das so Großartig. Dies funktioniert jedoch nicht. </p> <p>Ich habe Folgendes versucht, aber die Fehlermeldung <code>Fehler: Unerwarteter Bezeichner 'Objekt' </code> erhalten. </p> <pre class="brush:php;toolbar:false;">const invalidArgs = ImportedStory.args export const ButtonAsSlot: Story = { ...Spielplatz, render: (args, { argTypes }) => Komponenten: { UICard, UIButton }, Requisiten: Object.keys(argTypes), aufstellen() { zurückkehren { ...argumente, } }, Vorlage: ` <UICard v-bind="args"> <template v-if="$props.default" v-slot> <p>↓Inhalt des unten angezeigten Slots</p> ${args.default} </template> </UICard> `, }), Argumente: { ...Playground.args, Standard: `<UIButton v-bind="${disabledArgs}" />`, },</pre> <p>Wie kann ich eine Komponente mithilfe einer vorhandenen Story in einem Parameter übergeben und in einem Slot festlegen? </p> <p>Ich verwende Vue3. Code wird wie folgt angezeigt.</p> <p>--Card.stories.ts</p> <pre class="brush:php;toolbar:false;">import type { Meta, StoryObj } from '@storybook/vue3' UICard aus './Card.vue' importieren UIButton aus „~/components/Clickable/Button.vue“ importieren importiere { setDefaultProps } aus '~/.storybook/utils' const meta: Meta<typeof UICard> = { Titel: 'Elemente/Karte', Komponente: UICard, Tags: ['autodocs'], } Standard-Meta exportieren type Story = StoryObj<typeof UICard> export const Playground: Story = { Geschichte: { Name: 'Standard', }, render: (args, { argTypes }) => ({ Komponenten: { UICard }, Requisiten: Object.keys(argTypes), aufstellen() { zurückkehren { ...argumente, } }, Vorlage: ` <UICard v-bind="args"> <template v-if="$props.default" v-slot> ${args.default} </template> </UICard> `, }), } setDefaultProps(Playground, UICard) export const ButtonAsSlot: Story = { ...Spielplatz, Geschichte: { Name: 'Button als Slots', }, render: (args, { argTypes }) => ({ Komponenten: { UICard, UIButton }, Requisiten: Object.keys(argTypes), aufstellen() { zurückkehren { ...argumente, } }, Vorlage: ` <UICard v-bind="args"> <template v-if="$props.default" v-slot> <p>↓Inhalt des unten angezeigten Slots</p> ${args.default} </template> </UICard> `, }), Argumente: { ...Playground.args, Standard: '<UIButton v-bind="{type: 'button', isDisabled: false, Variante: 'primary', label: 'test',}" />', }, }</pre> <p><br /></p>
P粉504920992
P粉504920992

Antworte allen(1)
P粉154798196

最后我像这样编写了代码并且它起作用了。

import { Disabled } from 'disabled.stories'

export const ButtonAsSlot: Story = {
  ...Playground,
  args: {
    ...Playground.args,
    disabledArgs: {
      ...Disabled.args,
    },
    default: '<UIButton v-bind="disabledArgs" />',
  },
}
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage