In this article, we will get a full understanding of the vue slots through the practical application of its various use cases. Lets start with know about vuejs slots first.
Slots are reserved space offered by vuejs to display content passed down from one component to another. There are two types of the slot in vuejs namely: named slot and unnamed(default) slot.
Create a component that initializes our map. In the template, we create a container for the map.
Slots and props help us achieve this by making it easy to dynamically change the content of components. In simple terms, props are openings within a component that are filled with data. This means that when a component has a prop, it expects to get data from another component or view within which it is imported. 在Vue中,slot是很实用的api,父组件可以很容易通过插槽向子组件插入内容,插槽还分为单个插槽,多个插槽和作用域插槽。 在React中,能不能实现和插槽一样的功能呢?当然有了,我们分别来看.
With props, Vue allows us to pass strings, objects, arrays, and functions from a parent component to its child component. While it is possible for us to pass HTML elements from a parent to its child component as a string this will make our website vulnerable to cross-site scripting attack that is why vuejs provides us with a slot which is a more secure and reliable method of passing HTML element and other contents from parent to its child component for rendering.
HOW TO USE SLOT In the child component where the content is to be displayed, add the slot tag as follows:
In this tutorial, we will generate our project with the Vue CLI
vue create slot-project
In the src folder create a components folder with parent.vue andchild.vue files
Adding the code below to child.vue
Add the code snippet below to parent.vue
Add the code snippet below to parent.vue
Here we imported the child component and pass down the HTML content to the child.
For these contents to be displayed in the child component, theslot tag must be added to the child component.
Lets add the slot tag to the child.vue file as follow:
In the app.js file add the parent.vue component
Now, we can verify that slot is working as expected.
Now our app should be like:
For styling our slot component, the CSS styles should be added to the component with the slot tag.
So in child.vue component we will add the following styles to the HTML content received from the parent.vue component.
In order to use multiple slots in vue, vuejs provides us with away to name our slots.
What if we want the h2 and h3 tags in the parent component to be displayed individually in separate slots. This would be a typical use case for named slots.
In the Parent.vue component we will name our slots as follows:
In the child.vue component we will receive the named slot as follows:
Here vuejs reserves two slots to display the content of the slotattribute with the value of message and name as separate contents.
In this article, we have seen a practical use case of slots to transfer content from a parent component to a child component.
For more information on the slot, check out the Vue documentation.