一:ref
父组件
<template>
<div id="app">
<v-head ref="headlist" @myevent="sendmsg"></v-head>
</div>
</template>
<script>
import header from "@/components/Head";
import { defineAsyncComponent } from "vue";
export default {
name: "App",
components: {
"v-head": header,
},
data(){
return {}
},
mounted() {
//this.$refs 可以直接使用子组件里的数据和方法
console.log(this.$refs.headlist);//上面ref=xx 这里就写this.$refs.xx
},
</script>
<style>
</style>
子组件
<template>
<div id="headinfo">
头部组件
<br>
{{msg}}
</div>
</template>
<script>
export default {
name:'headinfo',
props:{
msg:String
},
}
</script>
<style>
</style>
二:props
父组件
<template>
<div id="app">
<v-head :msg="msg" ></v-head> //动态传值 父组件:xx 子组件的props里就写 xx:{}
</div>
</template>
<script>
import header from "@/components/Head";
import { defineAsyncComponent } from "vue";
export default {
name: "App",
components: {
"v-head": header,
},
data(){
return {
msg:'动态传值',
}
},
};
</script>
<style>
</style>
子组件
<template>
<div id="headinfo">
头部组件
<br>
{{msg}}
</div>
</template>
<script>
export default {
name:'headinfo',
//父组件写了 :msg 所以这里写 msg:xx
props:{
msg:String
},
}
</script>
<style>
</style>
三:emit(子传父)
父组件
<template>
<div id="app">
<v-head @value="value" ></v-head> //动态传值 父组件:xx 子组件的props里就写 xx:{}
</div>
</template>
<script>
import header from "@/components/Head";
import { defineAsyncComponent } from "vue";
export default {
name: "App",
components: {
"v-head": header,
},
data(){
return {
arr:[]
},
methods:{
value(val){
this.arr = val
}
}
},
};
</script>
<style>
子组件
<template>
<div id="headinfo">
头部组件
<br>
</div>
</template>
<script>
export default {
name:'headinfo',
data(){
return{
arr:[]
}
}
methods:{
select(){
this.$emit("value",this.arr)//value和父亲那的@value要一样
}
}
}
</script>
<style>
</style>