最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue組件通信深入分析

 更新時間:2022年08月05日 10:57:42   作者:飯啊飯°  
對于vue來說,組件之間的消息傳遞是非常重要的,用vue可以是要組件復用的,而組件實例的作用域是相互獨立,這意味著不同組件之間的數(shù)據(jù)無法互相引用,一般來說,組件之間可以有幾種關(guān)系,下面是我對組件之間消息傳遞的常用方式的總結(jié)

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

  • 父子組件之間的通信;
  • 兄弟組件之間的通信;
  • 祖孫與后代組件之間的通信;
  • 非關(guān)系組件之間的通信。

二、props傳遞數(shù)據(jù)

適用場景:父組件傳遞數(shù)據(jù)給子組件;

  • 子組件設(shè)置props屬性,定義接收父組件傳遞過來的參數(shù);
  • 父組件在使用子組件標簽中通過字面量來傳遞值

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>

效果

三、$emit 觸發(fā)自定義事件

  • 適用場景:子組件傳遞數(shù)據(jù)給父組件
  • 子組件通過 $emit觸發(fā)自定義事件,$emit第二個參數(shù)為傳遞的數(shù)值;
  • 父組件綁定監(jiān)聽器獲取到子組件傳遞過來的參數(shù)。

Student1.vue

<template>
  <div>
    Student1
    <button @click="giveData()">點我傳遞數(shù)據(jù)</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標記

  • 使用場景:子組件傳遞數(shù)據(jù)給父組件
  • 父組件在使用子組件的時候設(shè)置ref
  • 父組件通過設(shè)置子組件ref來獲取數(shù)據(jù)
<template>
  <div>
    Person
    <Student2 ref="foo"></Student2>
    <button @click="getRef()">點擊獲取ref數(shù)據(jù)</button>
  </div>
</template>
<script>
import Student2 from "./Student2";
export default {
  name: "Person",
  components: {
    Student2,
  },
  methods: {
    getRef() {
      console.log(this.$refs.foo);
    },
  },
};
</script>

效果

五、EventBus事件總線

  • 使用場景:任意組件傳值
  • 創(chuàng)建一個中央事件總線EventBus
  • 兄弟組件通過$emit觸發(fā)自定義事件,$emit第二個參數(shù)為傳遞的數(shù)值
  • 另一個兄弟組件通過$on監(jiān)聽自定義事件

main.js

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

Student2.vue

<template>
  <div>
    Student2
    <button @click="getBus()">點我獲取全局事件總線數(shù)據(jù)</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

使用方法類似全局事件總結(jié)

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

七、vuex

  • 使用場景:復雜關(guān)系的組件數(shù)據(jù)傳遞
  • Vuex是一個用來存儲共享變量的容器
  • state:用來存放共享遍歷的地方;
  • getter:可以增加一個getter派生狀態(tài),用來獲得共享變量的值;
  • mutations:用來存放修改state的方法;
  • actions也是用來存放修改state的方法,不過action是在mutations的基礎(chǔ)上進行的。常用來做一些異步操作。

八、總結(jié)

  • 父——>子:props;
  • 子——>父:$emit,ref;
  • 兄弟——>兄弟,任意——>任意:$bus。
  • 復雜關(guān)系:vuex。

到此這篇關(guān)于Vue組件通信深入分析的文章就介紹到這了,更多相關(guān)Vue組件通信內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue3 獲取元素高度不準的問題

    vue3 獲取元素高度不準的問題

    這篇文章主要介紹了vue3 獲取元素高度不準的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • 教你如何通過Vue路由改變地址欄的參數(shù)

    教你如何通過Vue路由改變地址欄的參數(shù)

    Vue是一款非常流行的JavaScript框架,它提供了許多方便開發(fā)者的功能,本文將介紹如何通過Vue路由改變地址欄的參數(shù),感興趣的朋友跟隨小編一起看看吧
    2023-10-10
  • 基于javascript的拖拽類封裝詳解

    基于javascript的拖拽類封裝詳解

    這篇文章主要介紹了基于javascript的拖拽類封裝,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-04-04
  • vue中使用vue-router切換頁面時滾動條自動滾動到頂部的方法

    vue中使用vue-router切換頁面時滾動條自動滾動到頂部的方法

    這篇文章主要介紹了vue項目中在使用vue-router切換頁面的時候滾動條自動滾動到頂部的實現(xiàn)方法,一般使用Window scrollTo() 方法實現(xiàn),本文給大家簡單介紹了crollTop的使用,需要的朋友可以參考下
    2017-11-11
  • Vue項目依賴包安裝及配置過程

    Vue項目依賴包安裝及配置過程

    這篇文章主要介紹了Vue項目依賴包安裝及配置過程,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2023-12-12
  • vue下載文件以及文件重命名方式

    vue下載文件以及文件重命名方式

    這篇文章主要介紹了vue下載文件以及文件重命名方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • vue 修改 data 數(shù)據(jù)問題并實時顯示的方法

    vue 修改 data 數(shù)據(jù)問題并實時顯示的方法

    今天小編就為大家分享一篇vue 修改 data 數(shù)據(jù)問題并實時顯示的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-08-08
  • 解決vue單頁面應(yīng)用打包后相對路徑、絕對路徑相關(guān)問題

    解決vue單頁面應(yīng)用打包后相對路徑、絕對路徑相關(guān)問題

    這篇文章主要介紹了解決vue單頁面應(yīng)用打包后相對路徑、絕對路徑相關(guān)問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • vue-element-admin開發(fā)教程(v4.0.0之前)

    vue-element-admin開發(fā)教程(v4.0.0之前)

    本文主要介紹了vue-element-admin開發(fā)教程(v4.0.0之前),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-04-04
  • Vue接口封裝的完整步驟記錄

    Vue接口封裝的完整步驟記錄

    對于中小型企業(yè),vue應(yīng)用越來越多,學習vue相對于react的成本要低點,入門相對簡單。這篇文章主要給大家介紹了關(guān)于Vue接口封裝的相關(guān)資料,需要的朋友可以參考下
    2021-05-05

最新評論

阳新县| 灵丘县| 繁昌县| 瑞丽市| 蓬莱市| 瓮安县| 黄平县| 新闻| 江阴市| 黎川县| 田林县| 武威市| 遂平县| 公安县| 玉环县| 丰镇市| 家居| 榆林市| 武威市| 茶陵县| 兴宁市| 龙门县| 卢湾区| 环江| 中西区| 民勤县| 瑞昌市| 崇文区| 高陵县| 福泉市| 磴口县| 沐川县| 南京市| 黔江区| 怀仁县| 宣汉县| 宜兴市| 淳化县| 赤峰市| 邵东县| 阳泉市|