vue父子传值,兄弟传值,子父传值详解
程序员文章站
2022-03-16 21:08:23
目录一、父组件向子组件传值1.父组件.vue2.子组件.vue二、兄弟组件间传值还可以通过中间件bus1.a组件.js2.b组件.js三、子组件向父组件传值1.父组件.js2.子组件.js总结:一、父...
一、父组件向子组件传值
1.父组件.vue
// 父组件中 <template> <div> <child ref="child" :title="value"/> </div> </template> <script> export default { data() { return { value: 'hello world!' } } } </script>
2.子组件.vue
// 父组件中 <template> <div> <span>{{title}}</span> </div> </template> <script> export default { props: { title: { type: string, default: '' } } } </script>
//title值为'hello world!
二、兄弟组件间传值还可以通过中间件bus
$emit
传值
$on
接收
$off
删除传输事件
1.a组件.js
this.$bus.$emit("flag",true)
2.b组件.js
mounted() { this.$bus.$off('flag') this.$bus.$on('flag', data=> { this.flag= data }) }
三、子组件向父组件传值
1.父组件.js
<template> <div> <child ref="child" @gettitle="gettitle"/> </div> </template> <script> import child from './components/child' export default { components: { child }, data() { return { } }, method:{ gettitle(data){ console.log(data) } } } </script>
打印结果为 hello xuliting
2.子组件.js
<template> <div> <span>{{title}}</span> </div> </template> <script> export default { data() { return { title: 'hello xuliting' } }, mounted(){ this.getfun() }, method:{ getfun(){ this.$emit("gettiltle",this.title) } } } </script>
总结:
组件间也可以通过传递方法从而解决。例如父组件为a,子组件有b和c。
父组件a调用子组件b的方法定义为afun,把afun传递给子组件c即可
这是在父组件中的组件c进行方法传递
<c :a-fun="afun" />
引用的则是在组件c,通过props
props: { afun: { type: function, default: () => function() {} } }
本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注的更多内容!