91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Vue如何實現父子組件之間的通信功能

發布時間:2021-07-17 19:48:45 來源:億速云 閱讀:2195 作者:小新 欄目:web開發

這篇文章主要為大家展示了“Vue如何實現父子組件之間的通信功能”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“Vue如何實現父子組件之間的通信功能”這篇文章吧。

在vue組件通信中其中最常見通信方式就是父子組件之中的通信,而父子組件的設定方式在不同情況下又各有不同。最常見的就是父組件為控制組件子組件為視圖組件。父組件傳遞數據給子組件使用,遇到業務邏輯操作時子組件觸發父組件的自定義事件。無論哪種組織方式父子組件的通信方式都是大同小異。

一、父組件到子組件通訊

  父組件到子組件的通訊主要為:子組件接受使用父組件的數據,這里的數據包括屬性和方法(String,Number,Boolean,Object, Array ,Function)。vue提倡單項數據流,因此在通常情況下都是父組件傳遞數據給子組件使用,子組件觸發父組件的事件,并傳遞給父組件所需要的參數。

1、通過props傳遞數據

父子通訊中最常見的數據傳遞方式就是通過props傳遞數據,就好像方法的傳參一樣,父組件調用子組件并傳入數據,子組件接受到父組件傳遞的數據進行驗證使用。

<!--父組件-->
 <template>
  <div>
   <h3>父組件</h3>
   <br>
   <Child-one :parentMessage="parentMessage"></Child-one>
  </div>
 </template>
 <script>
  import ChildOne from './ChildOne';
 
  export default{
   components: {
    ChildOne,
   },
   data() {
    return {
     parentMessage: '我是來自父組件的消息',
    };
   },
  };
 </script>
 <style scoped>
 </style>

 <!--子組件-->
 <template>
  <div>
   <h4>我是子組件一</h4>
   <span>{{parentMessage}}</span>
  </div>
 </template>
 <script>
  export default{
   props: ['parentMessage'],
  };
 </script>
 <style scoped>
 </style>

props可以接受function,所以function也可以以這種方式傳遞到子組件使用。

2、通過$on傳遞父組件方法

通過$on傳遞父組件方法是組件通信中常用的方法傳遞方式。它可以與通過props傳遞方法達到相同的效果。相比于props傳遞function,它更加的直觀和顯示的表現出了調用關系。

<!--父組件-->
 <template>
  <div>
   <h3>父組件</h3>
   <br>
   <Child-one @childEvent="parentMethod"></Child-one>
  </div>
 </template>
 <script>
  import ChildOne from './ChildOne';
 
  export default{
   components: {
    ChildOne,
   },
   data() {
    return {
     parentMessage: '我是來自父組件的消息',
    };
   },
   methods: {
    parentMethod() {
     alert(this.parentMessage);
    },
   },
  };
 </script>
 <style scoped>
 </style>

 <!--子組件-->
 <template>
  <div>
   <h4>我是子組件一</h4>
  </div>
 </template>
 <script>
  export default{
   mounted() {
    this.$emit('childEvent');
   },
  };
 </script>
 <style scoped>
 </style>

3、獲取父組件然后使用父組件中的數據(不推薦)

準確來說這種方式并不屬于數據的傳遞而是一種主動的查找。父組件并沒有主動的傳遞數據給子組件,而是子組件通過與父組件的關聯關系,獲取了父組件的數據。

 該方法雖然能實現獲取父組件中的數據但是不推薦這種方式,因為vue提倡單向數據流,只有父組件交給子組件的數據子組件才有使用的權限,不允許子組件私自獲取父組件的數據進行使用。在父與子的關系中子應當是處于一種被動關系。

 this.$parent

此處的this為子組件實例

二、子組件到父組件通訊

  子組件到父組件的通訊主要為父組件如何接受子組件之中的數據。這里的數據包括屬性和方法(String,Number,Boolean,Object, Array ,Function)。

1、通過$emit傳遞父組件數據

與父組件到子組件通訊中的$on配套使用,可以向父組件中觸發的方法傳遞參數供父組件使用。

<!--父組件-->
 <template>
  <div>
   <h3>父組件</h3>
  <br>
   <Child-one @childEvent="parentMethod"></Child-one>
  </div>
 </template>
 <script>
  import ChildOne from './ChildOne';
  export default{
   components: {
    ChildOne,
   },
   data() {
    return {
     parentMessage: '我是來自父組件的消息',
    };
   },
   methods: {
    parentMethod({ name, age }) {
     console.log(this.parentMessage, name, age);
    },
   },
  };
 </script>
 <style scoped>
 </style>

 <!--子組件-->
 <template>
  <div>
   <h4>我是子組件一</h4>
  </div>
 </template>
 <script>
  export default{
   mounted() {
    this.$emit('childEvent', { name: 'zhangsan', age: 10 });
   },
  };
 </script>
 <style scoped>
 </style>

2、refs獲取

可以通過在子組件添加ref屬性,然后可以通過ref屬性名稱獲取到子組件的實例。準確來說這種方式和this.$parent一樣并不屬于數據的傳遞而是一種主動的查找。

 盡量避免使用這種方式。因為在父子組件通信的過程中。父組件是處于高位是擁有控制權,而子組件在多數情況下應該為純視圖組件,只負責視圖的展示和自身視圖的邏輯操作。對外交互的權利應該由父組件來控制。所以應當由父組件傳遞視圖數據給子組件,子組件負責展示。而子組件的對外交互通過$emit觸發父組件中相應的方法,再由父組件處理相應邏輯。

<template>
  <div>
   <h3>父組件</h3>
   <br>
   <Child-one ref="child"></Child-one>
  </div>
 </template>
 <script>
  import ChildOne from './ChildOne';
  export default{
   components: {
    ChildOne,
   },
   mounted(){
    console.log(this.$refs['child']);
   },
  };
 </script>
 <style scoped>
 </style>
 this.$refs['child']

以上是“Vue如何實現父子組件之間的通信功能”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

vue
AI

登封市| 西平县| 郸城县| 井陉县| 基隆市| 天祝| 叙永县| 买车| 正安县| 绩溪县| 乌兰察布市| 新干县| 高碑店市| 麟游县| 宁津县| 南华县| 抚远县| 林州市| 丽江市| 合作市| 顺昌县| 鄄城县| 南平市| 纳雍县| 阳东县| 云浮市| 大英县| 巴塘县| 谷城县| 双鸭山市| 岳西县| 莲花县| 思南县| 商洛市| 南部县| 南漳县| 鹤壁市| 木里| 成都市| 凤阳县| 台东市|