中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

Vue組件通信實例分析

發布時間:2022-08-05 14:01:26 來源:億速云 閱讀:145 作者:iii 欄目:開發技術

本文小編為大家詳細介紹“Vue組件通信實例分析”,內容詳細,步驟清晰,細節處理妥當,希望這篇“Vue組件通信實例分析”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。

一、組件間的通信方式分類

  • 父子組件之間的通信;

  • 兄弟組件之間的通信;

  • 祖孫與后代組件之間的通信;

  • 非關系組件之間的通信。

Vue組件通信實例分析

二、props傳遞數據

適用場景:父組件傳遞數據給子組件;

  • 子組件設置props屬性,定義接收父組件傳遞過來的參數;

  • 父組件在使用子組件標簽中通過字面量來傳遞值

Person.vue

<template>
  <div>
    Person
    <Student1 name="jack" age="18"></Student1>
    </div>
</template>
<script>
import Student1 from './Student1'
export default {
    name: 'Person',
    components: {
        Student1,
    },
</script>

Student1.vue

<template>
  <div>
    Student1
    {{name}},{{age}}
  </div>
</template>
<script>
export default {
    name: 'Student1',
    props: {
        name: String,
        age:Number,
    }
}
</script>

效果

Vue組件通信實例分析

三、$emit 觸發自定義事件

  • 適用場景:子組件傳遞數據給父組件

  • 子組件通過 $emit觸發自定義事件,$emit第二個參數為傳遞的數值;

  • 父組件綁定監聽器獲取到子組件傳遞過來的參數。

Student1.vue

<template>
  <div>
    Student1
    <button @click="giveData()">點我傳遞數據</button>
  </div>
</template>
<script>
export default {
    name: 'Student1',
    methods: {
        giveData() { 
            this.$emit('add', '12345');
        }
    },
}
</script>

Person.vue

<template>
  <div>
    Person
    <Student1 @add="cartAdd($event)"></Student1>
    </div>
</template>
<script>
import Student1 from './Student1'
export default {
    name: 'Person',
    components: {
        Student1,
    },
    methods: {
        cartAdd(event) { 
            console.log(event);
        }
    },
}
</script>

四、ref標記

  • 使用場景:子組件傳遞數據給父組件

  • 父組件在使用子組件的時候設置ref

  • 父組件通過設置子組件ref來獲取數據

<template>
  <div>
    Person
    <Student2 ref="foo"></Student2>
    <button @click="getRef()">點擊獲取ref數據</button>
  </div>
</template>
<script>
import Student2 from "./Student2";
export default {
  name: "Person",
  components: {
    Student2,
  },
  methods: {
    getRef() {
      console.log(this.$refs.foo);
    },
  },
};
</script>

效果

Vue組件通信實例分析

五、EventBus事件總線

  • 使用場景:任意組件傳值

  • 創建一個中央事件總線EventBus

  • 兄弟組件通過$emit觸發自定義事件,$emit第二個參數為傳遞的數值

  • 另一個兄弟組件通過$on監聽自定義事件

main.js

beforeCreate() {
  Vue.prototype.$bus = this
}

Student2.vue

<template>
  <div>
    Student2
    <button @click="getBus()">點我獲取全局事件總線數據</button>
  </div>
</template>
<script>
export default {
  name: 'Student2',
  data() {
    return {
      name: 'fanafan',
      age:'17'
    }
  },
  methods:{
    getBus(){
      this.$bus.$emit('bus',this.name)
    }
  }
}
</script>

Student1.vue

mounted() {
    this.$bus.$on('bus', (data) => { 
        console.log(data)
    })
},

六、$parent 或 $root

使用方法類似全局事件總結

Vue.prototype.$parent = this
// 傳數據
this.$parent.$emit('parent',this.age)
//接數據
this.$parent.$on('parent', (data) => {
    console.log(data);
})

七、vuex

  • 使用場景:復雜關系的組件數據傳遞

  • Vuex是一個用來存儲共享變量的容器

  • state:用來存放共享遍歷的地方;

  • getter:可以增加一個getter派生狀態,用來獲得共享變量的值;

  • mutations:用來存放修改state的方法;

  • actions也是用來存放修改state的方法,不過action是在mutations的基礎上進行的。常用來做一些異步操作。

讀到這里,這篇“Vue組件通信實例分析”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。

向AI問一下細節

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

vue
AI

清水县| 贡山| 扶绥县| 衢州市| 慈利县| 西青区| 定陶县| 韶关市| 遂溪县| 潜江市| 庆元县| 高淳县| 阜宁县| 任丘市| 新津县| 宁都县| 江城| 安陆市| 永春县| 阿拉尔市| 陇川县| 土默特右旗| 兴隆县| 丹巴县| 池州市| 陆河县| 治多县| 沧州市| 将乐县| 梧州市| 丰原市| 安国市| 光泽县| 福州市| 永吉县| 长丰县| 抚顺县| 乐平市| 河南省| 成安县| 留坝县|