While building your VueJS components. It's important to note that you should have a Single Root Element as part of the Component template.
Let's see what that means by and example.
We'll build a very basic component that has an input box and below the input box, we show the user whatever he typed into the input box. Basic v-model binding.
Here is how the component looks
Vue.component('input-binding',{
template : `<input type="text" v-model="name"/>
<p>Your Name is {{name}}</p>`,
data() {
return {
name: 'Tushar',
}
}
});
Notice that we have used a literal string to define our template using the backtick. Along with this we also define a Basic Vue instance and mount it to the app id inside HTML.
We can now use the component element in our HTML.
<div id="app">
<input-binding></input-binding>
</div>
This will not work and will throw the following error in your console.
This is because every Vue Component must have a single root element in its template. In our case we have two elements at the root one is input and another is p tag.
Fixing this is simple, you can wrap the whole template of a Component inside a div
tag. In our case, we will modify our component to look like this.
Vue.component('input-binding',{
template : `<div>
<input type="text" v-model="name"/>
<p>Your Name is {{name}}</p>
</div>`,
data() {
return {
name: 'Tushar',
}
}
});
That's all about Components having Single Root Element in VueJS.