Vue.js Components

Creating and using Vue components

Component Definition

export default { # Options API
    name: 'MyComponent',
    data() {
        return { count: 0 }
    }
}

Composition API

import { ref } from 'vue';
export default {
    setup() {
        const count = ref(0);
        return { count }
    }
}

Props

props: ['title', 'count'] # array syntax
props: {
    title: String, # type validation
    count: {
        type: Number,
        required: true,
        default: 0
    }
}

Emitting Events

this.$emit('update', value); # Options API
const emit = defineEmits(['update']);
emit('update', value); # Composition API

Slots

<slot>Default content</slot> # default slot
<slot name="header"></slot> # named slot
<template #header>...</template> # use named slot

Component Registration

import MyComponent from './MyComponent.vue';
export default {
    components: { MyComponent } # local registration
}