FRAMEWORK » VUE
Components
Single-File Component (SFC)
We can nest components.
Example of ChildComp.vue in the same directory:
vue
<template>
<h2>A Child Component!</h2>
</template>Importing it from the parent component:
vue
<script>
import ChildComp from './ChildComp.vue'
export default {
components: {
ChildComp
}
}
</script>Render the child component in the parent component:
vue
<template>
<ChildComp />
</template>Props
We can receive props from the parent component.
Declare the props the child component acceps:
vue
<script>
export default {
props: {
msg: String
}
}
</script>Pass the prop from the parent component using the v-bind syntax:
vue
<template>
<ChildComp :msg="greeting" />
</template>Emits
We can emit events to the parent component.
Create events with the emits array and raise the event with this.$emit from the child component:
vue
<script>
export default {
emits: ['response'],
created() {
this.$emit('response', 'hello from child')
}
}
</script>Get the event with v-on from the parent component:
vue
<template>
<ChildComp @response="(msg) => childMsg = msg" />
<p>{{ childMsg }}</p>
</template>Slots
Used to pass template fragments to a child component.
Create the slot element in the child component with an optional fallback content:
vue
<template>
<slot>Fallback content</slot>
</template>Pass the slot content from the parent component:
vue
<template>
<ChildComp>This is some slot content!</ChildComp>
</template>