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

Vue組件之間四種通信方式詳解

 更新時間:2022年01月10日 15:15:19   作者:℡_牽伴 ※  
vue框架提供了前端開發(fā)組件的思想,可以通過組件來組合成一個完整的頁面,都是隨著組件數量原來越多,組件之間難免需要相互通信。本文將為大家介紹四種組件間的通信方式,需要的可以參考一下

前言

vue 框架提供了前端開發(fā)組件的思想,可以通過組件來組合成一個完整的頁面,都是隨著組件數量原來越多,組件之間難免需要相互通信,那么如何實現組件之間的通信呢?下面介紹 vue 組件通信的幾種方法

父子組件通信?

父組件傳遞 props 給子組件(數據以及改變數據的方法),子組件通過 $emit 來更新父組件的狀態(tài)

父組件定義,聲明狀態(tài) { name: 'baidu.com' } 以及可以改變狀態(tài)的方法update(),通過 name 傳遞和 @update 把 name 屬性和 update 方法傳遞給子組件

<template>
  <div>
    <Child : @update="update" />
  </div>
</template>

<script>
  import Child from "./components/Child";

  export default {
    name: "App",
    components: {
      Child,
    },
    data() {
      return {
        name: "baidu.com",
      };
    },
    methods: {
      update() {
        this.name = "www.baidu.com";
      },
    },
  };
</script>vue


子組件的定義,定義 props 接收 name 屬性,通過 $emit 傳遞 update 參數通知父組件更新狀態(tài)

<template>
  <div>
    {{ name }}
    <button @click="$emit('update')">通知父組件數據</button>
  </div>
</template>

<script>
  export default {
    name: "Child",
    props: {
      name: String,
    },
  };
</script>

父組件與子孫組件的通信?

父組件通過 provide 創(chuàng)建對象,子組件通過 inject 來使用父組件的數據,不受組件層級的限制

父組件通過 provide 定義需要傳遞是數據

<template>
  <div>
    <Child />
  </div>
</template>

<script>
  import Child from "./components/Child";

  export default {
    name: "App",
    components: {
      Child,
    },
    provide: {
      name: "www.baidu.com",
    },
  };
</script>

子組件通過 inject 屬性控制哪些屬性需要訪問

<template>
  <div>{{ name }}</div>
</template>

<script>
  export default {
    name: "Child",
    inject: ["name"],
  };
</script>

父組件獲取子組件數據?

通過ref 來獲取子組件的實例,可以獲取子組件的狀態(tài)或者調用子組件的方法,例如下面

<template>
  <div>
    <Child ref="child" />
  </div>
</template>

<script>
  import Child from "./components/Child";

  export default {
    name: "App",
    components: {
      Child,
    },
    mounted() {
      console.log(this.$refs.child.title);
    },
  };
</script>

可以通過 this.$refs.child 獲取到 Child 組件的實例,訪問 Child 組件的 data

無需考慮組件關系的通信?

通過 vue 提供的發(fā)布訂閱模式,也叫做 EventBus(事件總線)

定義一個 eventBus 實例

import Vue from "vue";
export default new Vue();

父組件在 mounted 生命周期里面通過 $on 監(jiān)聽 update 事件

<template>
  <div>
    <Child : />
  </div>
</template>

<script>
  import Child from "./components/Child";
  import eBus from "../eventBus";

  export default {
    name: "App",
    data() {
      return {
        name: "baidu.com",
      };
    },
    components: {
      Child,
    },
    mounted() {
      eBus.$on("update", (val) => {
        
        this.name = val;
      });
    },
  };
</script>

子組件通過 vue 實例的 $emit 觸發(fā) update 事件

<template>
  <div>
    {{ name }}
    <button @click="clickHandle">通知父組件更新</button>
  </div>
</template>

<script>
  import eBus from "../../eventBus";

  export default {
    name: "Child",
    props: {
      name: String,
    },
    data() {
      return {
        title: "child component",
      };
    },
    methods: {
      clickHandle() {
        
        eBus.$emit("update", "Hello World");
      },
    },
  };
</script>

使用全局狀態(tài)管理庫 vuex

具體就不在這里展開講,有興趣的可以查閱 vue 官方文檔

到此這篇關于Vue組件之間四種通信方式詳解的文章就介紹到這了,更多相關Vue組件通信內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • vue3動態(tài)路由刷新出現空白頁的原因與最優(yōu)解

    vue3動態(tài)路由刷新出現空白頁的原因與最優(yōu)解

    頁面刷新白屏其實是因為vuex引起的,由于刷新頁面vuex數據會丟失,這篇文章主要給大家介紹了關于vue3動態(tài)路由刷新出現空白頁的原因與最優(yōu)解的相關資料,需要的朋友可以參考下
    2023-11-11
  • Vue2.0實現簡單分頁及跳轉效果

    Vue2.0實現簡單分頁及跳轉效果

    這篇文章主要為大家詳細介紹了Vue2.0實現簡單數據分頁,及頁數的跳轉效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • Vue運用transition實現過渡動畫

    Vue運用transition實現過渡動畫

    vue的過渡動畫,主要是transition標簽的使用,配合css動畫實現的。接下來通過本文給大家分享Vue運用transition實現過渡動畫效果,感興趣的朋友一起看看吧
    2019-05-05
  • Vue2.0使用過程常見的一些問題總結學習

    Vue2.0使用過程常見的一些問題總結學習

    本篇文章主要介紹了Vue2.0使用過程常見的一些問題總結學習,詳細的介紹了使用中會遇到的各種錯誤,有興趣的可以了解一下。
    2017-04-04
  • vue之組件內監(jiān)控$store中定義變量的變化詳解

    vue之組件內監(jiān)控$store中定義變量的變化詳解

    今天小編就為大家分享一篇vue之組件內監(jiān)控$store中定義變量的變化詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • 深入詳解Vue3中的Mock數據模擬

    深入詳解Vue3中的Mock數據模擬

    這篇文章主要為大家介紹了深入Vue3中的Mock數據模擬實現細節(jié)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-05-05
  • vue實現點擊復制到粘貼板

    vue實現點擊復制到粘貼板

    這篇文章主要為大家詳細介紹了vue實現點擊復制到粘貼板,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • Vue前端打包的詳細流程

    Vue前端打包的詳細流程

    這篇文章主要介紹了Vue前端打包的詳細流程,下面文章圍繞Vue前端打包的相關資料展開詳細內容,需要的小伙伴可以參考一下,希望對大家有所幫助
    2021-11-11
  • vue3中的this.$set寫法舉例

    vue3中的this.$set寫法舉例

    在Vue2中,由于數據響應式是利用object.definedProperty()實現的,無法深層監(jiān)聽數據變化,因此提供了$set方法來解決數據變化視圖未實時更新的問題,然而,在Vue3中,數據響應式使用ES6的proxy進行數據代理,因此廢棄了$set的概念
    2024-10-10
  • Vue實現百度下拉提示搜索功能

    Vue實現百度下拉提示搜索功能

    這篇文章主要為大家詳細介紹了Vue實現百度下拉提示搜索功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06

最新評論

湟中县| 高州市| 定结县| 宜都市| 高邑县| 古蔺县| 连江县| 南充市| 广州市| 阳山县| 揭西县| 枞阳县| 焉耆| 惠安县| 常山县| 平安县| 乌鲁木齐县| 得荣县| 潍坊市| 泰和县| 甘泉县| 阿瓦提县| 沁源县| 玛多县| 沙坪坝区| 青铜峡市| 永新县| 申扎县| 洛阳市| 余姚市| 汕尾市| 海门市| 昌乐县| 金川县| 乌拉特前旗| 塔城市| 沙雅县| 新营市| 泗水县| 罗甸县| 千阳县|