Vue父子組件和非父子組件傳值問題

1.如何創(chuàng)建組件

1.新建一個(gè)組件,如:在goods文件夾下新建goodsList.vue

<template>
   <div class='tmpl'>
        goodsList組件
   </div>
</template>
    
<style>
    
</style>
    
<script>
    
    export default {
        data() {
            return{}
        },
        created() {
            
        },
        methods: {
            
        },
        components:{
        
        }
    }
</script>

2.在main.js中引入 import goodsList from 'goods/goodsList.vue'
3.在main.js中創(chuàng)建路由對(duì)象,創(chuàng)建路由規(guī)則

const router = new VerRouter({
    routes[
        {path:/goods/goodsList,component:goodsList}
    ]
})

4.在主組件App.vue中設(shè)置 <router-link to="/goods/goodsList">商品列表</router-link>
系統(tǒng)會(huì)自動(dòng)幫我們把這個(gè)標(biāo)簽轉(zhuǎn)化為a標(biāo)簽href="#/goods/goodsList"

2.如何在父組件中嵌入子組件

1.新建一個(gè)子組件 subcomponent.vue
2.在父組件中引入 import subComponent from '../subComponent/subcomponent.vue'
3.在父組件中注冊(cè) components

 export default {
        components:{
            //如果屬性名和值相同,可以簡(jiǎn)寫
            subComponent
        }
    }

4.在父組件指定位置寫一個(gè)自定義標(biāo)簽<subComponent></subComponent>

3.如何實(shí)現(xiàn)父子組件之間的傳值

1.父組件向子組件傳值

1.在子組件中設(shè)置props:['commentId'] //子組件用來接收父組件傳遞過來值的屬性名稱
2.在父組件的自定義子組件標(biāo)簽中設(shè)置<subComponent :commentId="this.$route.params.photoId"></subComponent>//父組件傳遞值給子組件

2.子組件向父組件傳值

1.在父組件的自定義標(biāo)簽中設(shè)置一個(gè)自定義函數(shù)<subComponent v-on:paramsChange="getSubComponentParams"></subComponent>
2.在父組件的methods中聲明函數(shù)

    getSubComponentParams(params){
    //接收來自子組件的參數(shù)params
        this.myParams = params;
    }

3.在子組件中傳遞參數(shù)

    /**
    * 參數(shù)1:要觸發(fā)的事件名稱
    * 參數(shù)2:傳遞的值
    */
    this.$emit('paramsChange',this.params)

如何實(shí)現(xiàn)非父子組件的傳值

非父子組件中兩個(gè)組件沒有聯(lián)系,不能使用this來傳值,所以我們只能通過第三方的變量,來達(dá)到傳值的效果,這個(gè)第三方變量就是:
使用一個(gè)空的 Vue 實(shí)例作為中央事件總線
傳值步驟:
1.創(chuàng)建一個(gè)公用js組件 在組件內(nèi)導(dǎo)出一個(gè)空的Vue實(shí)例,比如新建一個(gè)commonvue.js文件

import Vue from 'vue'

export default new Vue() //es6的寫法
/**
 * 相當(dāng)于下面這樣寫
 * 
 * const bus = new Vue()
 * module.exports = bus
 */

2.在組件A中傳遞參數(shù)

bus.$emit('goodsCount',this.myCount)

3.在組件B中接收參數(shù)

bus.$on('goodsCount',(goodsCount)=>{
      const oldVal = $("#badgeId").text()

      const lastVal = parseInt(oldVal) + goodsCount
      console.log(lastVal)
      $("#badgeId").text(lastVal)
  })
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 現(xiàn)在的很多產(chǎn)品文章,都喜歡講產(chǎn)品經(jīng)理的能力模型,用戶體驗(yàn)的五個(gè)層次等等,但是似乎都大同小異。在張小龍的飯否上看到一...
    躚塵閱讀 743評(píng)論 3 10
  • 你說那一樹的霞 是你徹夜的思念 當(dāng)子規(guī)謝幕了春天 卻只有殘紅一片 你說你滿腹的心事 浸泡著思念的甜 我卻不知 苦澀...
    澗水清清閱讀 246評(píng)論 0 3
  • 落葉知盡 便落成 滿地黃金 思念誰認(rèn) 被掃清 路上無痕 那不被了解的 我們 好多人和事都已不在場(chǎng) 各自走向 不同...
    友韻文學(xué)閱讀 253評(píng)論 2 0
  • 快樂真的很簡(jiǎn)單, 只要你擁有一顆樂觀向上善良的心, 只要放棄心中的遺憾、煩惱和恩怨, 只要多一份理解和包容, 一切...
    趙妍華太陽花閱讀 325評(píng)論 0 1

友情鏈接更多精彩內(nèi)容