DEV Community

Olukayode Asemudara
Olukayode Asemudara

Posted on

Slots VS Props in NUXT-3

In Nuxt 3, "slots" and "props" serve different purposes in the context of components.

  1. Slots:
    • Slots allow you to pass content from a parent component to a child component. They are useful when you want to create reusable components that can accept different content depending on where they are used.
    • In Nuxt 3, slots are defined in the child component using <slot></slot> tags. The content provided by the parent component is then inserted into these slots.
    • Slots provide flexibility and reusability by allowing the parent component to inject content into specific areas of the child component's template.

Example:

<!-- ChildComponent.vue -->
<template>
  <div>
    <h2>Child Component</h2>
    <slot></slot> <!-- Content from parent component will be inserted here -->
  </div>
</template>
Enter fullscreen mode Exit fullscreen mode
<!-- ParentComponent.vue -->
<template>
  <div>
    <h1>Parent Component</h1>
    <ChildComponent>
      <!-- Content passed to ChildComponent's slot -->
      <p>This content will be placed inside the ChildComponent.</p>
    </ChildComponent>
  </div>
</template>
Enter fullscreen mode Exit fullscreen mode
  1. Props:
    • Props are custom attributes that you can define on a component to pass data from a parent component to a child component.
    • They allow you to make your components dynamic by passing data dynamically to them.
    • In Nuxt 3, props are defined in the child component's script section and can be used inside the component's template.
    • Props are useful when you need to pass specific data or configurations to a component.

Example:

<!-- ChildComponent.vue -->
<template>
  <div>
    <h2>{{ title }}</h2>
  </div>
</template>

<script>
export default {
  props: {
    title: {
      type: String,
      required: true
    }
  }
}
</script>
Enter fullscreen mode Exit fullscreen mode
<!-- ParentComponent.vue -->
<template>
  <div>
    <h1>Parent Component</h1>
    <ChildComponent title="Dynamic Title" />
  </div>
</template>
Enter fullscreen mode Exit fullscreen mode

In summary, while slots are used for passing content from parent to child components, props are used for passing data or configurations from parent to child components in Nuxt 3.

> Anytime, anyday..I'd prefer to use SLOTS instead of PROPS. Slots come in very handy and you have easier control of your DOM than when you use props.

Top comments (0)