介绍
本篇内容主要讲解“利用vue实现组建通信的方式”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“利用vue实现组建通信的方式”吧!
<编辑类="目录">目录编辑>- <李>
一、组件通信
李>- <李>
1,道具父组件——→子组件通信
李> <李>2美元发射子组件——→父组件传递
李> <李>3,总线(事件总线)兄弟组件通信
李> <李>4美元的家长,孩子美元直接访问组件实例
李> <李>5美元参
李> <李>6,提供/注入(提供/注入)多组件或深层次组件通信
李> <李>7槽(slot-scope作用域插槽)子元素,在父元素(类似于通信)
李> <李>8日vuex状态管理
李>一、组件通信
1,道具父组件——→子组件通信
- <李>
父组件——属性的方式传值给子组件
李> <李>子组件,道具方式接收数据
& lt; Son :数据=癴Data"祝辞& lt;/Son> & lt; script> import Son 得到& # 39;@/组件/儿子# 39; export 默认{才能 ,,,的名字:& # 39;父亲# 39; ,,,组件:{儿子}, ,,,的数据(){ ,,,,,返回{ ,,,,,,,fData: & # 39;我是父组件向子组件传递的值道具方式& # 39; ,,,,,} ,,,} ,,} & lt;/script>
子组件道具<代码> 代码>接受的参数名称,要与父组件传递时定义的属性名一致
& lt; template> & lt;才能div>我是父组件的数据:{{fData}} & lt;/div> & lt;才能div @click=changeData>我是父组件传递修改后的数据:{{mydata}} & lt;/div> & lt;/template> & lt; script> export 默认{才能 ,,,的名字:& # 39;儿子# 39; ,,,道具:{ ,,,,,fData: { ,,,,,,,类型:字符串, ,,,,,,,默认值:& # 39;& # 39; ,,,,,} ,,,} ,,,的数据(){ ,,,,,mydata: this.fatherData ,,,}, ,,,方法:{ ,,,,changeData () { ,,,,,,,this.mydata +=, & # 39;改变数据& # 39; ,,,,,} ,,,}, ,,} & lt;/script>
<强>注意:强>
- <李>
子组件不能够直接去修改父组件传递的值修改的:因为<代码> Vue 代码>的单向数据流机制,如果直接修改那父组件的值就被“污染”了。(<代码>道具> 代码是单向绑定的(只读属性):当父组件的属性变化时,将传导给子组件,但是反过来不会)
报错信息大概是:Vue使用道具通信出错:<代码>避免变异道具直接自价值时将被重写父代码>
引用><李>
<强>解决方案:强>可以在子组件内定义一个变量mydata去接收fData数据
李> <李>
<强>参数传递类型不确定是可以这么写强>:
李>
道具:{ ,,,fData: { ,,,,,,,类型:字符串、数字, ,,,,,,,默认值:& # 39;& # 39; ,,,} }2美元发射子组件——→父组件传递
<李>
子组件绑定自定义事件
李> <李>发出()美元第一个参数为:自定义的事件名称,第二个参数为:需要传递的数据
李> <李>使用排放()美元触发更改数据子组件
李>
& lt; el-button @click=癶andleEmit"在改变父组件& lt;/el-button> & lt; script> 默认,export  { ,,名字:& # 39;儿子# 39; ,,方法:{ ,,,,handleEmit () { ,,,,,,,美元发出(& # 39;triggerEmit& # 39; & # 39;子组件的数据& # 39;) ,,,,} ,,} ,} & lt;/script>父组件(子组件发送的事件名称,要和父组件接受的事件名称一致)
& lt; Son @triggerEmit=癱hangeData"祝辞& lt;/Son> & lt; script> ,import Son 得到& # 39;@/组件/儿子# 39; 默认,export  { ,,名字:& # 39;父亲# 39; 儿子,,组件:{}, ,,方法:{ ,,,,changeData(名字){ ,,,,,,console.log(名字),//,=祝辞,我是来自子组件的数据 ,,,,} ,,} ,} & lt;/script><>强劲美元发射与道具结合兄弟组件传值强>
<李>
父组件引入两个子组件
李> <李>父组件充当一个桥梁作用父组件
李>& lt; childA :名字=皀ame"祝辞& lt;/ChildA> & lt; ChildB :名字=皀ame", @changeName=癳ditName"祝辞& lt;/ChildB>,, ,,,, export 默认{ 数据才能(),{ ,,,return { ,,,,,名字:,& # 39;数据你好& # 39; ,,,} ,,}, 方法:才能,{ ,,,editName(名字){ ,,,,,this.name =,名字 ,,,} ,,} }利用vue实现组建通信的方式