Vue.js组件间通信方式总结【推荐】

  

平时在使用Vue框架的业务开发中,组件不仅仅要把模板的内容进行复用,更重要的是组件之间要进行通信。组件之间通信分为三种:父-子、子-父;跨级组件通信。下面,就组件间如何通信做一些总结。

  

  

在组件中,使用选项道具来声明需要从父级组件接受的数据,道具的值可以是两种:一种是字符串数组,一种是对象. props中声明的数据与组件数据函数返回的主要区别在于道具来自父级,而数据中的组件是自己的数据,作用域是组件本身,这两种数据都可以在模板模板及计算属性和计算方法方法中使用。如以下例子:

     //父组件ParentComponent   & lt; template>   & lt; div类=案缸榧北?   & lt; h3>这是一个父组件& lt;/h3>   & lt; ChildComponent: parentMessage=" parentMessage "/比;   & lt;/div>   & lt;/template>   & lt; script>   从“进口ChildComponent。/ChildComponent '   出口默认{   名称:“ParentComponent”,   数据(){   返回{   parentMessage:“这是来自父组件的数据的   }   },   组件:{   ChildComponent   }   }   & lt;/script>//子组件ChildComponent   & lt; template>   & lt; div类=白幼榧北?   & lt; h3>这是一个子组件& lt;/h3>   & lt; h4> {{parentMessage}} & lt;/h4>   & lt;/div>   & lt;/template>   & lt; script>   出口默认{   名称:“ChildComponent”,   道具(“parentMessage”):   }   & lt;/script>      

 Vue.js组件间通信方式总结【推荐】“> </p>
  <p>小结:父组件传递个子组件的数据可以写死,也可以用父级的动态数据用v-bind来绑定道具的值。</p>
  <p> </p>
  <p>当子组件需要向父组件传递数据时,就要用到自定义事件,v指令除了监听DOM事件外,还可以用于组件间的自定义事件,Vue组件有一套类似与观察者模式的一套模式,子组件用美元发出()来触发事件,父组件上用$()来监听子组件的事件。举个例子如下:</p>
  
  <pre类=//ParentComponent父组件   & lt; template>   & lt; div类=案缸榧北?   & lt; h3>这是一个父组件总:{{总}}& lt;/h3>   & lt; ChildComponent: parentMessage=" parentMessage”:总=白堋盄handleAdd10=癵etTotal”/比;   & lt;/div>   & lt;/template>   & lt; script>   从“进口ChildComponent。/ChildComponent '   出口默认{   名称:“ParentComponent”,   数据(){   返回{   parentMessage:“这是来自父组件的数据的,   总:10,   }   },   组件:{   ChildComponent   },   方法:{   getTotal () {   this.total=总;   控制台。日志(“ParentComponent总:”,总);   }   }   }   & lt;/script>//ChildComponent子组件   & lt; template>   & lt; div类=白幼榧北?   & lt; h3>这是一个子组件& lt;/h3>   & lt; h4> {{parentMessage}} & lt;/h4>   & lt;按钮@click=" handleAdd10 "祝辞+ 10按钮& lt;/button>   & lt;/div>   & lt;/template>   & lt; script>   出口默认{   名称:“ChildComponent”,   道具:“parentMessage”,“总”,   方法:{   handleAdd10 () {   让总=this.total + 10;   控制台。日志(ChildComponent排放:美元);   美元。发出(handleAdd10,总);   }   }   }   & lt;/script>      

结果:   

 Vue.js组件间通信方式总结【推荐】“> </p>
  <p>上面例子中,子组件有一个按钮,实现加10的效果,子组件通过道具项来接收父组件传入的值,在改变后,通过释放美元把它传给父组件,父组件定义事件@handleAdd10方法,子组件发出()美元方法第一个参数是自定义事件的名称,后面的参数是要传的数据,对应的父组件通过getTotal(总)来接收子组件传递的数据,由此子组件到父组件通信完成。</p>
  <p> </p>
  
  <pre类=//ParentComponent改动如下   Arunachal Pradesh,   & lt; h3>这是一个父组件总:{{总}}& lt;/h3>   & lt; ChildComponent: parentMessage=" parentMessage”:总=白堋盄handleAdd10=癵etTotal”/比;   & lt; InputComponent v模型=白堋?比;   Arunachal Pradesh,   & lt; script>   从“进口InputComponent。/InputComponent '   & lt;/script>   Arunachal Pradesh,//InputComponent子组件   & lt; template>   & lt;输入类型=拔谋尽盄input=皍pdateValue(事件)美元”在   & lt;/template>   & lt; script>   出口默认{   名称:“InputComponent”,   方法:{   updateValue (evt) {   美元。排放(“输入”,evt.target.value)   }   }   }   & lt;/script>

Vue.js组件间通信方式总结【推荐】