Back to Storybook

Decorator With UpdateArgs

docs/_snippets/decorator-with-updateArgs.md

10.3.61.3 KB
Original Source
js
import { useArgs } from 'storybook/preview-api';

const WithIncrementDecorator = {
  args: {
    counter: 0,
  },
  decorators: [
    (story, { args }) => {
      const [, updateArgs] = useArgs();
      return {
        components: { story },
        setup() {
          return { args, updateArgs };
        },
        template: `
          <div>
            <button @click="() => updateArgs({ counter: args.counter + 1 })">
              Increment
            </button>
            <story />
          </div>
        `,
      };
    },
  ],
};
ts
import { useArgs } from 'storybook/preview-api';
import type { Meta, StoryObj } from '@storybook/vue3';

const WithIncrementDecorator: StoryObj<Meta<typeof MyComponent>> = {
  args: {
    counter: 0,
  },
  decorators: [
    (story, { args }) => {
      const [, updateArgs] = useArgs();
      return {
        components: { story },
        setup() {
          return { args, updateArgs };
        },
        template: `
          <div>
            <button @click="() => updateArgs({ counter: args.counter + 1 })">
              Increment
            </button>
            <story />
          </div>
        `,
      };
    },
  ],
};