Component in Vue.js


🧩 What is a Component?

A component in Vue is a reusable instance of a Vue app, with its own:

  • template (HTML structure)
  • script (data, methods, props)
  • styles (optional CSS)

They help you organize, reuse, and maintain code easily.


⚙️ Basic Structure of a Component

A Vue component file (usually .vue) has three main sections:

<template>
  <div class="greeting">
    <h1>Hello, {{ name }}!</h1>
  </div>
</template>

<script>
export default {
  name: 'GreetingComponent',
  props: {
    name: {
      type: String,
      required: true
    }
  }
}
</script>

<style scoped>
.greeting {
  color: #42b983;
}
</style>

🧱 Types of Components

  1. Root Component – the main Vue instance (usually App.vue).
  2. Child Components – reusable parts imported and used in other components.

Example usage:

<!-- App.vue -->
<template>
  <div>
    <GreetingComponent name="Alice" />
  </div>
</template>

<script>
import GreetingComponent from './components/GreetingComponent.vue'

export default {
  components: {
    GreetingComponent
  }
}
</script>

🔄 Component Communication

Components communicate via:

  • Props → Parent → Child
  • Events (emits) → Child → Parent
  • Provide/Inject → Grandparent → Deep children
  • State management (e.g., Pinia, Vuex) → For global state

Example:

<!-- Child.vue -->
<template>
  <button @click="$emit('increment')">+</button>
</template>
<!-- Parent.vue -->
<template>
  <CounterButton @increment="count++" />
  <p>Count: {{ count }}</p>
</template>

<script>
import CounterButton from './CounterButton.vue'

export default {
  components: { CounterButton },
  data() {
    return { count: 0 }
  }
}
</script>

Leave a Reply