---
name: vue-component
description: 创建新的 Vue 3 组件,包含 TypeScript 类型定义和最佳实践
创建新的 Vue 3 组件时使用此工作流。
创建一个结构良好的 Vue 3 组件,包含 TypeScript 类型、正确的 props/emit 定义,并遵循项目规范。
src/components/**/*.vuesrc/views/**/*.vuesrc/**/components/*.vue.vue 文件,使用 <script setup lang="ts"><script setup lang="ts">
import { ref, computed } from 'vue';
// Props 定义
interface Props {
title: string;
disabled?: boolean;
}
const props = withDefaults(defineProps<Props>(), {
disabled: false,
});
// Emits 定义
interface Emits {
(e: 'click', value: string): void;
}
const emit = defineEmits<Emits>();
// 响应式状态
const isActive = ref(false);
// 方法
const handleClick = () => {
if (!props.disabled) {
isActive.value = !isActive.value;
emit('click', props.title);
}
};
</script>
<template>
<div
class="component-name"
:class="{ 'is-active': isActive, 'is-disabled': disabled }"
@click="handleClick"
>
<span>{{ title }}</span>
<slot />
</div>
</template>
<style scoped>
.component-name {
/* 样式 */
}
</style>