You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vue 2 + Storybook:如何为Composition API声明的事件添加文档?

在Storybook 6.5.8 Vue2项目中为Composition API组件的事件添加文档

完全可行,给你两个实用方案:

方案一:组件内显式声明emits选项

Vue 2的@vue/composition-api提供的defineComponent支持emits选项,只要在组件里显式声明触发的事件,Storybook会自动识别并在事件区域展示。

组件代码示例:

<template>
  <button @click="handleClick">触发自定义事件</button>
</template>

<script>
import { defineComponent } from '@vue/composition-api'

export default defineComponent({
  // 可直接传事件数组,也支持带描述的对象格式
  emits: {
    myEvent: '点击按钮时触发的自定义事件'
  },
  setup(props, { emit }) {
    const handleClick = () => {
      emit('myEvent', { content: '示例数据' })
    }

    return { handleClick }
  }
})
</script>

方案二:在Story参数中手动配置事件文档

如果不想修改组件代码,或者需要更灵活的事件描述配置,可以在对应的Story文件里,通过parameters.docs.events手动定义事件信息。

Story文件示例:

import MyComponent from './MyComponent.vue'

export default {
  title: '组件/MyComponent',
  component: MyComponent,
  parameters: {
    docs: {
      events: {
        myEvent: {
          description: '点击组件按钮时触发的自定义事件',
          // 配置事件参数的描述和类型
          args: {
            content: {
              description: '事件携带的自定义数据',
              type: { name: 'object' }
            }
          }
        }
      }
    }
  }
}

const Template = (args, { argTypes }) => ({
  components: { MyComponent },
  props: Object.keys(argTypes),
  template: '<MyComponent @myEvent="handleMyEvent" />',
  methods: {
    handleMyEvent(data) {
      console.log('接收到事件数据:', data)
    }
  }
})

export const 默认示例 = Template.bind({})

两种方案都能让你的myEvent事件显示在Storybook页面的事件区域里,按需选择即可。

内容的提问来源于stack exchange,提问作者Christian Benseler

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 01:46:18