Vue父子组件相互通讯方法总结
转载:https://juejin.im/post/5c1370365188250f73759a79
作者:Zero游戏人生
来源:掘金
子组件调用父组件的方法:
1、$emit
2、$parent
3、prop
4、vuex(dispatch: actions => commit:mutations)
$parent方法
父组件
<template><div>
<child></child>
</div>
</template>
<script>
import child from '@/components/child';
export default {
components: {
child
},
methods: {
fatherMethod() {
console.log('father组件');
}
}
}
</script>
子组件
<template><div @click="activeBtn"> </div>
</template>
<script>
export default {
methods: {
activeBtn() {
this.$parent.fatherMethod()
}
}
}
</script>
$emit方法
父组件
<template><div>
<child @callFather="activeSon"></child>
</div>
</template>
<script>
import child from '@/components/child';
export default {
components: {
child
},
methods: {
fatherMethod() {
console.log('father组件');
},
activeSon(){
this.fatherMethod()
}
}
}
</script>
子组件
<template><div @click="activeBtn"> </div>
</template>
<script>
export default {
methods: {
activeBtn() {
this.$emit("callFather")
}
}
}
</script>
prop方法
父组件
<template><div>
<child :activeSon="fatherMethod()"></child>
</div>
</template>
<script>
import child from '@/components/child';
export default {
components: {
child
},
methods: {
fatherMethod() {
console.log('father组件');
}
}
}
</script>
子组件
<template><div @click="activeBtn"> </div>
</template>
<script>
export default {
props:{
activeSon: {
type: Function,
default: null
}
},
methods: {
activeBtn() {
this.activeSon()
}
}
}
</script>
父组件调用子组件中的方法、变量
通常使用$ref获取子组件的方法、变量($ref也可以用于获取某个DOM)
父组件
<component v-bind:is="userAdd" ref="addUser"></component>
import userAdd from "./components/edit";export default {
components: {
userAdd
},
data() {
return {
userAdd: userAdd,
};
},
.....
openNew() {// this.$refs.addUser.user.uType= 2; // 调用子组件变量
this.$refs.addUser.isEdit = false;
this.$refs.addUser.title = "新增用户";
this.$refs.addUser.editDialog = true;
}, ·
子组件
export default {data() {
return {
isEdit: false, // 是否为编辑状态,默认为false,即默认为新增
formLabelWidth: "100px",
editDialog: false,
user: {
uType: "2"
},
title: ""
};
},
......
例子:https://blog.csdn.net/qq_34664239/article/details/80386153
兄弟组件间传递DOM数据,调用函数
写一个兄弟组件之间传递数据,父组件调用方法的案例:
第一个子组件cartcont,发射数据
this.$emit('cartadd', event.target);
父组件接收数据,并将数据,通过调用另一个子组件shopcart 的方法传递给另一个子组件shopcart
<v-cartcont :food="food" @cartadd='_drop'></v-cartcont><v-shopcart ref='shopcart'></v-shopcart>
_drop(target){
console.log('父组件接收数据')
this.$refs.shopcart.drop(target);
}
shopcart子组件的方法
drop(el){console.log('调用另一个子组件的方法')
console.log(el)
}
以上是 Vue父子组件相互通讯方法总结 的全部内容, 来源链接: utcz.com/z/376239.html