1.错误代码示范
<template>
<Child :message="message" :age="age" :list="list"/>
<button @click="message='全新的数据'" >修改数据</button>
<hr/>
<Child2 @onEvent="messageHandle"/>
<p>{{ child2Data }}</p>
</template>
<script>
import Child from "./Child.vue";
import Child2 from "./Child2.vue"
export default {
name: "Parent",
data(){
return {
message:"数据测试",
age: 20,
list:["iwen","sxt","itbaizhan"],
child2Data:""
};
},
methods:{
messageHandle(data)
{
this.child2Data = data;
},
},
components:{
Child,
Child2,
}
}
</script>
<style scoped>
</style>
2.报错内容
3.正确示范
<template>
<div>
<Child :message="message" :age="age" :list="list"/>
<button @click="message='全新的数据'" >修改数据</button>
<hr/>
<Child2 @onEvent="messageHandle"/>
<p>{{ child2Data }}</p>
</div>
</template>
<script>
import Child from "./Child.vue";
import Child2 from "./Child2.vue"
export default {
name: "Parent",
data(){
return {
message:"数据测试",
age: 20,
list:["iwen","sxt","itbaizhan"],
child2Data:""
};
},
methods:{
messageHandle(data)
{
this.child2Data = data;
},
},
components:{
Child,
Child2,
}
}
</script>
<style scoped>
</style>
4.错误总结
从文字翻译上来讲,其实Component template should contain exactly one root element. If you are using v-if on multiple elements, use v-else-if to chain them instead这句话已经讲的很明白了,直译出来 就是:组件模板应该包含一个根元素。如果在多个元素上使用V-IF,则使用V-ELS-IF来链接它们。
但是这么说依然让新手有点摸不着头脑,其实就是说在模版里只能有一个主div(根对象),如果有多个元素,请用一个主div包含他们。