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

vue 組件間的通信之子組件向父組件傳值的方式

 更新時(shí)間:2020年07月29日 10:40:35   作者:金剛葫蘆瓢9527  
這篇文章主要介紹了vue 組件間的通信之子組件向父組件傳值的方式總結(jié),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

父組件向子組件傳值:父組件通過(guò)屬性向下傳值的方式和子組件通信;

使用步驟:

定義組件:現(xiàn)有自定義組件com-a、com-b,com-a是com-b的父組件;

準(zhǔn)備獲取數(shù)據(jù):com-b要獲取父組件data中的name屬性;

<com-b :name=“name”></com-b> 使用v-bind 綁定name屬性,紅色部分為屬性名稱,可以隨意寫。

在子組件定義部分里添加選項(xiàng),值是個(gè)字符串?dāng)?shù)組 props:[‘name'],將上邊紅色的屬性名稱寫在這里;

之后就可定義在子組件中使用name屬性了;

好了,接著本文的重點(diǎn)內(nèi)容。

寫vue,如果頁(yè)面涉及到多個(gè)組件,就會(huì)涉及組件之間的通信,可能是父子組件間的通信,也可以是同級(jí)組件間的通信,那么,vue里面的組件如何通信。一般來(lái)說(shuō)在vue的數(shù)據(jù)傳遞是在父組件傳子組件通過(guò)屬性來(lái)傳,子組件傳父組件通過(guò)事件來(lái)傳值。

1. 子組件通過(guò)通過(guò)this.$emit()的方式將值傳遞給父組件;
2. 通過(guò)vuex來(lái)傳遞組件間的數(shù)據(jù);
3. 通過(guò)中央總線來(lái)傳遞組件間的數(shù)據(jù);
4. 通過(guò)修改父組件傳過(guò)來(lái)的對(duì)象屬性
5. 父組件使用子組件的引用ref調(diào)用子組件的方法獲取子組件的數(shù)據(jù)

一、子組件通過(guò)this.$emit()的方式將值傳遞給父組件,父組件里面的子組件通過(guò)@func綁定一個(gè)函數(shù)來(lái)處理

子組件傳過(guò)來(lái)的數(shù)據(jù)

<template>
  <div class="app">
    <input @click="sendMsg" type="button" value="給父組件傳遞值">
  </div>
</template>
<script>
export default {
 
  data () {
    return {
      //將msg傳遞給父組件
      msg: "我是子組件的msg",
    }
  },
   methods:{
     sendMsg(){
       //func: 是父組件指定的傳數(shù)據(jù)綁定的函數(shù),this.msg:子組件給父組件傳遞的數(shù)據(jù)
       this.$emit('func',this.msg)
     }
   }
}
</script>

父組件

<template>
  <div class="app">
    <child @func="getMsgFormSon"></child>
  </div>
</template>
<script>
import child from './child.vue'
export default {
  data () {
    return {
      msgFormSon: "this is msg"
    }
  },
  components:{
    child,
  },
  methods:{
      getMsgFormSon(data){
        this.msgFormSon = data
        console.log(this.msgFormSon)
      }
  }
}
</script>

二、通過(guò)vuex來(lái)傳遞組件間的數(shù)據(jù)

vuex就是把數(shù)據(jù)放到內(nèi)存里面去,各個(gè)組件間都可以共享vuex里面的數(shù)據(jù)

1.在一個(gè)組件間調(diào)用this.$store.dispatch(‘findUserInfoList', q_userInfo_form); 來(lái)觸發(fā)vuex里面函數(shù)修改vuex的數(shù)據(jù),然后在另一個(gè)組件用計(jì)算屬性映射獲取vuex的這個(gè)屬性值,就可以實(shí)現(xiàn)組件間的數(shù)據(jù)傳遞

computed: mapState({
   //映射vuex的相關(guān)屬性值
   userInfoList: state => state.userInfoModule.userInfoList,
   start: state => state.userInfoModule.start,
   total: state => state.userInfoModule.total,
}),
method:{
   //查詢操作
   findUserInfoList: function(q_userInfoForm, start){
     this.q_userInfoForm.start = (start === null) ? 1 : start;
     this.$store.dispatch('findUserInfoList', q_userInfo_form);
   },
}

三、通過(guò)中央總線來(lái)傳遞組件間的數(shù)據(jù)

對(duì)于一些簡(jiǎn)單的項(xiàng)目里的可能又不是父子組件,可能是同級(jí)組件的,另一方面又沒(méi)有必要使用Vuex,針對(duì)這種情形可以使用中央事件總線(Event Bus)來(lái)解決問(wèn)題,主要用到vue對(duì)象的on和on和on和emit事件,在同一個(gè)vue的實(shí)例可以觸發(fā)這兩個(gè)事件,比如子組件傳遞數(shù)據(jù)到父組件,在子組件通過(guò)同一個(gè)vue對(duì)象觸發(fā)emit數(shù)據(jù)過(guò)vue實(shí)的emit事件傳遞數(shù)據(jù),在父組件通過(guò)vue實(shí)例的emit事件傳遞數(shù)據(jù),在父組件通過(guò)vue實(shí)例的on監(jiān)聽(tīng)剛剛emit觸發(fā)的事件來(lái)獲取子組件傳遞過(guò)來(lái)的數(shù)據(jù)

先創(chuàng)建一個(gè)constantsBus.js文件,里面根據(jù)不同模塊創(chuàng)建相關(guān)的vue實(shí)例

/**
 * 不同組件間通訊用的 中央事件總線
 */

import Vue from 'vue';

//用戶管理總線
export const userBus = new Vue();

//管理員管理總線
export const adminBus = new Vue();

在一個(gè)組件間調(diào)用$emit傳遞數(shù)據(jù)

//引用剛剛創(chuàng)建的constantsBus.js
import * as constantsBus from '@/common/constantsBus';

在這里插入圖片描述

4. 在另個(gè)接收數(shù)據(jù)的組件用$on來(lái)監(jiān)聽(tīng)獲取emit傳過(guò)來(lái)的數(shù)據(jù)

created() {
   let that = this;
   //監(jiān)聽(tīng)子組件的事件,獲取其他組件傳遞過(guò)來(lái)的data數(shù)據(jù)
   constantsBus.processBus.$on('processChooseAssessor', data => {
     //獲取emit觸發(fā)的processChooseAssessor事件傳遞過(guò)來(lái)的data數(shù)據(jù)
   });
},

四、通過(guò)修改父組件傳過(guò)來(lái)的對(duì)象屬性

一般來(lái)說(shuō)在vue的數(shù)據(jù)傳遞是在父組件傳子組件通過(guò)屬性來(lái)傳,但是通過(guò)屬性來(lái)傳值,是單向的,子組件不能修改父組件的prop值,如果在子組件里面修改父組件傳過(guò)來(lái)的prop屬性值,會(huì)報(bào)錯(cuò),但是也有例外,對(duì)象類型的除外,如果父組件傳給子組件的屬性是對(duì)象的話,是可以修改對(duì)象里面的值的,并且修改后也對(duì)父組件可見(jiàn),因?yàn)閷?duì)象的話最后的引用都是指向同一塊內(nèi)存,不受子組件不可以修改父組件的屬性約束。(不過(guò)不建議這樣處理,子組件可以修改父組件的屬性會(huì)污染數(shù)據(jù)傳遞,可能以后在那個(gè)子組件改了都不知道,一般對(duì)象的傳遞要深拷貝)

五、父組件使用子組件的引用ref調(diào)用子組件的方法獲取子組件的數(shù)據(jù)

1.在子組件寫一個(gè)獲取數(shù)據(jù)的方法

在這里插入圖片描述

2.父組件通過(guò)子組件的ref調(diào)用這個(gè)方法獲取子組件的數(shù)據(jù)

<trademark-file-upload ref="trademarkFileUpload" :uploadFileList="uploadFileList"></trademark-file-upload>

<script>
let fileList = this.$refs.trademarkFileUpload.getFileList();
<script>

到此這篇關(guān)于vue 組件間的通信之子組件向父組件傳值的方式的文章就介紹到這了,更多相關(guān)vue 子組件向父組件傳值內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Vue中插槽slot的用法詳解

    Vue中插槽slot的用法詳解

    插槽(Slot)是Vue.js中一個(gè)非常重要的概念,它極大地提高了組件的復(fù)用性和靈活性,通過(guò)插槽,我們可以自定義組件的內(nèi)容,使其能夠適應(yīng)不同的場(chǎng)景,本文將結(jié)合實(shí)際案例,詳細(xì)介紹Vue中插槽的基本用法、類型以及高級(jí)技巧,需要的朋友可以參考下
    2024-11-11
  • vue抽出組件并傳值實(shí)例

    vue抽出組件并傳值實(shí)例

    這篇文章主要介紹了vue抽出組件并傳值實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-07-07
  • Vue?element實(shí)現(xiàn)權(quán)限管理業(yè)務(wù)流程詳解

    Vue?element實(shí)現(xiàn)權(quán)限管理業(yè)務(wù)流程詳解

    目前本人再使用vue-element-admin項(xiàng)目時(shí)都是通過(guò)直接刪除一些用不上的路由來(lái)進(jìn)行側(cè)邊欄的清除,但是其實(shí)有一個(gè)更加好的辦法來(lái)對(duì)項(xiàng)目的側(cè)邊欄顯示的內(nèi)用進(jìn)行管理,就是權(quán)限管理,其實(shí)也不知道這個(gè)方法好不好,原理上來(lái)說(shuō)時(shí)跟直接刪除該路由的方式時(shí)一樣的
    2022-08-08
  • Vue.js高效前端開發(fā)

    Vue.js高效前端開發(fā)

    Vue是構(gòu)建Web界面的JavaScript庫(kù),原稱為Vue.js,它可以通過(guò)簡(jiǎn)潔的API來(lái)提供高效的數(shù)據(jù)綁定和靈活的組件系統(tǒng),本文詳細(xì)介紹了Vue的使用安裝和相關(guān)知識(shí),有興趣的同學(xué)可以參考借鑒
    2023-03-03
  • Vue中的ref作用詳解(實(shí)現(xiàn)DOM的聯(lián)動(dòng)操作)

    Vue中的ref作用詳解(實(shí)現(xiàn)DOM的聯(lián)動(dòng)操作)

    這篇文章主要介紹了Vue中的ref作用詳解(實(shí)現(xiàn)DOM的聯(lián)動(dòng)操作),需要的朋友可以參考下
    2017-08-08
  • vue組件之Alert的實(shí)現(xiàn)代碼

    vue組件之Alert的實(shí)現(xiàn)代碼

    本篇文章主要介紹了vue組件之Alert的實(shí)現(xiàn)代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-10-10
  • vue3 setup的使用和原理實(shí)例詳解

    vue3 setup的使用和原理實(shí)例詳解

    這篇文章主要介紹了vue3的setup的使用和原理,結(jié)合實(shí)例形式詳細(xì)分析了vue3 setup的基本功能、原理與使用方法,需要的朋友可以參考下
    2023-06-06
  • 淺析vue給不同環(huán)境配置不同打包命令

    淺析vue給不同環(huán)境配置不同打包命令

    本文分步驟給大家介紹vue給不同環(huán)境配置不同打包命令的方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-08-08
  • vue 實(shí)現(xiàn)滾動(dòng)到底部翻頁(yè)效果(pc端)

    vue 實(shí)現(xiàn)滾動(dòng)到底部翻頁(yè)效果(pc端)

    這篇文章主要介紹了pc端vue 滾動(dòng)到底部翻頁(yè)效果,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下
    2019-07-07
  • vue操作dom并為dom增加點(diǎn)擊事件方式

    vue操作dom并為dom增加點(diǎn)擊事件方式

    這篇文章主要介紹了vue操作dom并為dom增加點(diǎn)擊事件方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-04-04

最新評(píng)論

皋兰县| 北京市| 高雄市| 读书| 绍兴县| 宜春市| 镇雄县| 法库县| 浠水县| 观塘区| 玉环县| 温州市| 东阿县| 广南县| 海伦市| 盘山县| 木兰县| 宿迁市| 阳泉市| 玛纳斯县| 沁水县| 丹东市| 兴城市| 邯郸县| 兰州市| 襄樊市| 桂阳县| 平南县| 邛崃市| 句容市| 尼勒克县| 大城县| 天峻县| 松溪县| 山阴县| 富民县| 正镶白旗| 新晃| 蒲江县| 双江| 衡水市|