vuejs
  1. vuejs-slots

Vue.js Slots

Syntax

<parent-component>
  <template v-slot:default>
    <child-component></child-component>
  </template>
</parent-component>

Example

<!DOCTYPE html>
<html>
<head>
  <title>Vue.js Slots example</title>
   <script src="https://cdn.jsdelivr.net/npm/vue"></script>
</head>
<body>
  <div id="app">
    <blog-post>
      <template v-slot:title>
        Latest post
      </template>

      <template v-slot:content>
        This is the latest blog post.
      </template>
    </blog-post>
  </div>

  <script>
    Vue.component('blog-post', {
      template: `
        <div>
          <h3><slot name="title"></slot></h3>
          <p><slot name="content"></slot></p>
        </div>
      `
    })

    var app = new Vue({
      el: '#app'
    })
  </script>
</body>
</html>

Output

The output of the above example will be:

Latest post
This is the latest blog post.

Explanation

Vue.js Slots are a powerful feature that allows you to define the structure of a component from outside of the component. They provide a way to pass content from a parent component to a child component, and they can be used to define the structure of a component in a declarative way.

Use

Vue.js Slots are used to provide a flexible way to design reusable components. They provide a mechanism for a parent component to provide content to a child component in a way that allows the child component to render the content in a custom way. Slots can also be used to provide a default fallback content for a component.

Important Points

  • A slot is a placeholder that can be filled with content by a parent component.
  • Slots are defined using the v-slot directive.
  • The name of a slot is defined using the name attribute on the slot element.
  • A slot can also be given a default value using the slot attribute on an HTML element.
  • Slots can be used to create highly customizable components that can be reused across an application.

Summary

Vue.js Slots provide a powerful way to define the structure of a component from outside the component. They allow a parent component to provide content to a child component in a flexible way that allows the child component to render the content in a custom way. Understanding how to use slots effectively can greatly enhance the reusability and flexibility of your Vue.js components.

Published on: