国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

VUE 父子組件、兄弟組件 之間通信 最強詳解

這篇具有很好參考價值的文章主要介紹了VUE 父子組件、兄弟組件 之間通信 最強詳解。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目錄

1. 父組件 調(diào)用 子組件 內(nèi)參數(shù)/方法

1.1 通過 ref 調(diào)用/獲取 子組件內(nèi)參數(shù)/方法

2. 子組件 調(diào)用 父組件 內(nèi)參數(shù)/方法

2.1 通過?emit 調(diào)用 父組件方法

2.2 通過?props?調(diào)用 父組件方法/參數(shù)

2.3 通過 this.$parent 調(diào)用 父組件方法/參數(shù)

3. 兄弟組件 通信

3.1 通過?bus 進行 兄弟組件 通信

3.2 通過?父組件 讓兄弟組件 進行通信


簡單 總結(jié):

1.1 通過 ref 調(diào)用/獲取 子組件內(nèi)參數(shù)/方法

實現(xiàn):就是在 你想要訪問的組件上 通過 ref 注冊引用信息,然后依靠 this.$refs 調(diào)用 組件內(nèi)的方法以及參數(shù)。

2.1 通過?emit 調(diào)用 父組件方法

實現(xiàn):將 要在子組件中?想調(diào)用的父組件方法,通過【@】配置至組件上,然后通過this.$emit()來調(diào)用。

2.2 通過 props 調(diào)用 父組件方法/參數(shù)

實現(xiàn):將 要在子組件中?想調(diào)用的父組件方法/父組件參數(shù),通過 【:】配置至組件上,接著在子組件的?props 內(nèi)進行接收,然后直接通過 this.來調(diào)用就行。

2.3 通過 this.$parent 調(diào)用 父組件方法/參數(shù)

實現(xiàn):呃,啥也不用弄,只要保持當前組件上面有個父組件就行,直接通過 this.$parent 調(diào)用就行。

3.1 通過 bus 進行 兄弟組件 通信

實現(xiàn):通過 new Vue() 生成一個 bus 總線,然后在想要接收通信的組件內(nèi)設(shè)置?bus.$on, 在想要發(fā)起通信的組件內(nèi)使用 bus.$emit。

3.2 通過 父組件 讓兄弟組件 進行通信

子組件1 傳值 給父組件,父組件 傳值 給子組件2

想了解 ref、$refs、$parent? 請看我的另一篇文章:http://t.csdn.cn/66Fkt

1. 父組件 調(diào)用 子組件 內(nèi)參數(shù)/方法

1.1 通過 ref 調(diào)用/獲取 子組件內(nèi)參數(shù)/方法

步驟:

a 父組件 => 在 子組件元素上 設(shè)置 ref='名稱'

b 父組件 => 然后通過 使用 this.$refs.名稱.參數(shù)/方法 調(diào)用方法/參數(shù)

想了解 ref 請看我的另一篇文章:http://t.csdn.cn/66Fkt

先看截圖,再看代碼

VUE 父子組件、兄弟組件 之間通信 最強詳解

<template>
  <div class="box">

      <div>我是父組件</div>

      <div>{{ value }}</div>
      <button @click="handleFetchBaby1Param" class="button">獲取 baby1 內(nèi)參數(shù)</button>
      <button @click="handleFetchBaby1Function" class="button">調(diào)用 baby1 內(nèi)方法</button>
      
      <!-- 通過 ref 在 baby1 組件身上 注冊引用信息 -->
      <baby1 ref="baby1" class="border"></baby1>
      
  </div>
</template>

<script>
import baby1 from '@/components/html/baby1.vue'
export default {
  name: 'home',
  components:{
    baby1
  },
  data(){
    return{
      value: ""
    }
  },
  methods:{
    // 獲取 baby1 內(nèi)參數(shù)
    handleFetchBaby1Param(){
      this.value = this.$refs.baby1.value;
    },
    // 調(diào)用 baby1 內(nèi)方法
    handleFetchBaby1Function(){
      this.$refs.baby1.handleBaby1Self()
    }
  }
}
</script>
<template>
  <div class="box">
        <div>我是子組件1</div>
        <input v-model="value" style="width: 100%">
  </div>
</template>

<script>

export default {
    name: 'baby1',
    data(){
        return{
            value: null
        }
    },
    methods: {
        // Baby1 組件
        handleBaby1Self(){
            this.value = this.value + 1;
            console.log('Baby1 組件 內(nèi)方法被調(diào)用 =>', this.value)
        }
    }
}
</script>

2. 子組件 調(diào)用 父組件 內(nèi)參數(shù)/方法

2.1 通過?emit 調(diào)用 父組件方法

步驟:

a 父組件 => 首先 在父組件內(nèi)準備好 被 子組件調(diào)用的方法

b 父組件 => 將準備好的方法 需要通過@ 掛載至 組件元素上?(舉例:<baby1 @childConsole='parentConsole'></baby1>?)

c?子組件 => 在子組件內(nèi) 通過?this.$emit('方法名', 參數(shù)1,參數(shù)2...) 調(diào)用

先看截圖,再看代碼

VUE 父子組件、兄弟組件 之間通信 最強詳解

<template>
  <div class="box">
      <div>我是父組件</div>
      <div>{{ name }}</div>
      <!-- 通過 @ 將事件掛載 在組件上 -->
      <baby1 @childConsole='parentConsole'></baby1> 
  </div>
</template>

<script>
import baby1 from '@/components/html/baby1.vue'
export default {
  name: 'home',
  components:{
    baby1
  },
  data(){
    return{
      name: '',
    }
  },
  methods:{
    parentConsole(name){
      this.name = name;
      console.log('父組件 的 方法被調(diào)用', this.name)
    }
  }
}
</script>
<template>
  <div class="box">
        <div>我是子組件</div>
        <input v-model="value" style="width: 100%">
        <button @click="handleFetchHomeFunction">調(diào)用 父組件 方法</button>
  </div>
</template>

<script>
export default {
    name: 'baby1',
    data(){
        return{
            value: ''
        }
    },
    methods: {
        // 調(diào)用 父組件方法
        handleFetchHomeFunction(){
            this.$emit('childConsole', this.value)
        }
    }
}
</script>

2.2 通過?props?調(diào)用 父組件方法/參數(shù)

步驟:

a 父組件 => 首先 在父組件內(nèi)準備好 被 子組件調(diào)用的方法/參數(shù)

b 父組件 => 將準備好的方法 需要通過: 將 方法/參數(shù) 掛載至 組件元素上 (舉例:<baby1 :childConsole='parentConsole' :mail='mail'></baby1>?)

c 子組件 => 在 子組件 props 中 配置 接收來自父組件的方法/參數(shù)

d?子組件 => 在子組件內(nèi) 通過?this.方法名(參數(shù)1,參數(shù)2...) 調(diào)用 / this.參數(shù)名 獲取

先看截圖,再看代碼

VUE 父子組件、兄弟組件 之間通信 最強詳解

<template>
  <div class="box">
      <div>我是父組件</div>
      <div>{{ name }}</div>
      <!-- 通過 : 將 方法/參數(shù) 掛載 在組件上 -->
      <baby1 :childConsole='parentConsole' :mail='mail'></baby1> 
  </div>
</template>

<script>
import baby1 from '@/components/html/baby1.vue'
export default {
  name: 'home',
  components:{
    baby1
  },
  data(){
    return{
      name: '',
      mail: 'xxxx@qq.com'
    }
  },
  methods:{
    parentConsole(name){
      this.name = name;
      console.log('父組件 的 方法被調(diào)用', this.name)
    }
  }
}
</script>
<template>
  <div class="box">
        <div>我是子組件</div>
        {{ mail }}
        <input v-model="value" style="width: 100%">
        <button @click="handleFetchHomeFunction">調(diào)用 父組件 方法</button>
  </div>
</template>

<script>
export default {
    name: 'baby1',
    // 通過 配置 props 接收來自的方法/參數(shù)
    props:{
        // 接受 方法
        childConsole:{
            type: Function,
            require: true,
            default: null
        },
        // 接受 參數(shù)
        mail:{
            type: String,
            require: true,
            default: null
        },
    },
    data(){
        return{
            value: ''
        }
    },
    methods: {
        // 調(diào)用 父組件方法
        handleFetchHomeFunction(){
            this.childConsole(this.value)
            console.log('mail =>', this.mail)
        }
    }
}
</script>

2.3 通過 this.$parent 調(diào)用 父組件方法/參數(shù)

步驟:

a 父組件 => 首先 在父組件內(nèi)準備好 被 子組件調(diào)用的方法/參數(shù)

b 子組件 => 在子組件內(nèi) 通過?this.$parent.父組件方法名(參數(shù)1,參數(shù)2...) 調(diào)用方法 /?this.$parent.父組件內(nèi)參數(shù)名 獲取參數(shù)

想了解?$parent 請看我的另一篇文章:http://t.csdn.cn/66Fkt

先看截圖,再看代碼

VUE 父子組件、兄弟組件 之間通信 最強詳解

<template>
  <div class="box">
      <div>我是父組件</div>
      <div>{{ name }}</div>
      <baby1></baby1> 
  </div>
</template>

<script>
import baby1 from '@/components/html/baby1.vue'
export default {
  name: 'home',
  components:{
    baby1
  },
  data(){
    return{
      name: '',
      age: 18,
    }
  },
  methods:{
    parentConsole(name){
      this.name = name;
      console.log('父組件 的 方法被調(diào)用', this.name)
    }
  }
}
</script>
<template>
  <div class="box">
        <div>我是子組件</div>
        {{ age }}
        <input v-model="value" style="width: 100%">
        <button @click="handleFetchHomeFunction">調(diào)用 父組件 方法</button>
  </div>
</template>

<script>
export default {
    name: 'baby1',
    data(){
        return{
            value: '',
            age: null,
        }
    },
    methods: {
        handleFetchHomeFunction(){
            // 調(diào)用 父組件方法
            this.$parent.parentConsole(this.value);
            // 獲取 父組件參數(shù)
            this.age = this.$parent.age;
        }
    }
}
</script>

3. 兄弟組件 通信

3.1 通過?bus 進行 兄弟組件 通信

步驟:

a 在?main.js 文件內(nèi) 將 new Vue() 掛載至 vue 原型上。這樣方便使用,不用到處導(dǎo)入

b 在 接受 通信的組件內(nèi) 使用?this.$bus.$on() 進行初始化

c 在 發(fā)起通信 組件內(nèi) 使用?this.$bus.$emit('方法名', 參數(shù)1, 參數(shù)2...)

先看截圖,再看代碼

VUE 父子組件、兄弟組件 之間通信 最強詳解

// mian.js

import Vue from 'vue'
import App from './App'
import router from './router'

Vue.prototype.$bus = new Vue(); // 設(shè)置 掛載至 vue 的原型上

new Vue({
  el: '#app',
  router,
  components: { App },
  template: '<App/>'
})
<template>
  <div class="box">
      <div>我是父組件</div>

      <div style="display: flex">
        <!-- 子組件 1 (-_- 我和 子組件2 是同級關(guān)系 所以是兄弟組件 -_- )-->
        <baby1 class="border"></baby1>
        <!-- 子組件 2 (-_- 我和 子組件1 是同級關(guān)系 所以是兄弟組件 -_- )-->
        <baby2 class="border"></baby2> 
      </div>
      
  </div>
</template>

<script>
import baby1 from '@/components/html/baby1.vue'
import baby2 from '@/components/html/baby2.vue'

export default {
  name: 'home',
  components:{
    baby1,
    baby2
  }
}
</script>
<template>
  <div class="box">
        <div>我是子組件1</div>
        <input v-model="value" style="width: 100%">
        <button @click="handleFetchHomeFunction">將值 更新至 子組件2</button>
  </div>
</template>

<script>

export default {
    name: 'baby1',
    data(){
        return{
            value: ''
        }
    },
    methods: {
        // 調(diào)用 兄弟組件 方法
        handleFetchHomeFunction(){
            this.$bus.$emit('valueUpdate', this.value)
        }
    }
}
</script>
<template>
  <div class="box">
        <div>我是子組件2</div>
        <input v-model="value" style="width: 100%">
  </div>
</template>

<script>


export default {
    name: 'baby1',
    data(){
        return{
            value: ''
        }
    },
    mounted(){
        // 接收 事件
        this.$bus.$on('valueUpdate', (value)=>{
            this.value = value;
        })
    },
}
</script>

3.2 通過?父組件 讓兄弟組件 進行通信

因為相比較 bus 不是很方便,兄弟通信盡量用 bus 就好,所以這里就不放代碼了,直接說一下思路

子組件1 傳值 給父組件,父組件 傳值 給子組件2

博主清楚 文章排版的好壞,會導(dǎo)致 閱讀者 能否更好的理解內(nèi)容!

所以 如果你有 好的排版想法,可以私信給我呦!文章來源地址http://www.zghlxwxcb.cn/news/detail-451422.html

到了這里,關(guān)于VUE 父子組件、兄弟組件 之間通信 最強詳解的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Web前端 ---- 【Vue】(組件)父子組件之間的通信一文帶你了解

    Web前端 ---- 【Vue】(組件)父子組件之間的通信一文帶你了解

    目錄 前言 父組件傳子組件 ---- props 給要傳遞數(shù)據(jù)的子組件綁定要傳過去的屬性及屬性值 在子組件中使用props配置項接收 props配置項 子組件傳父組件 ---- 組件的自定義事件 子組件向父組件傳遞數(shù)據(jù) 通過代碼來綁定自定義事件 本文將介紹在Vue中父子組件如何進行通信 這里先介

    2024年02月05日
    瀏覽(631)
  • react 組件之間的通信(父子組件)

    React中 組件內(nèi)調(diào)用其他組件不需要進行 類似于vue 聲明組件(components) React 組件內(nèi)調(diào)用其他組件 直接將組件導(dǎo)入 放置在對應(yīng)的JSX 代碼中 父子組件通信(傳統(tǒng)): 1、父組件-子組件 ?通過屬性傳遞 2、子組件-父組件 ?父組件通過將自身的函數(shù)對象傳遞給子組件, 子組件執(zhí)行父組件

    2024年02月08日
    瀏覽(93)
  • 微信小程序----父子組件之間通信

    微信小程序----父子組件之間通信

    1、屬性綁定 用于父組件向子組件的指定屬性設(shè)置數(shù)據(jù),僅能設(shè)JSON兼容的數(shù)據(jù) 創(chuàng)建組件 ?將組件全局共享 ?對應(yīng)的父頁面進行調(diào)用 ?在子組件的js中定義參數(shù) ?子組件展示數(shù)據(jù) ?最終效果 2、事件綁定 用于子組件向父組件傳遞數(shù)據(jù),可以傳遞任意數(shù)據(jù) 步驟: 1、在父組件的

    2024年02月06日
    瀏覽(89)
  • 微信小程序-父子組件之間的通信

    父子組件之間通信的3種方式: 屬性綁定 用于父組件向子組件的指定屬性設(shè)置數(shù)據(jù),僅能設(shè)置JSON兼容的數(shù)據(jù) 子組件在properties節(jié)點中聲明對應(yīng)的屬性并使用。代碼: 事件綁定 用于子組件向父組件傳遞數(shù)據(jù),可以傳遞任意數(shù)據(jù) 事件綁定用于實現(xiàn)子向父傳值,可以傳遞任意類型

    2024年02月03日
    瀏覽(87)
  • 微信小程序父子組件之間通信的 3 種方式

    父子組件之間通信的 3 種方式 ① 屬性綁定 ? 用于父組件向子組件的指定屬性設(shè)置數(shù)據(jù),僅能設(shè)置 JSON 兼容的數(shù)據(jù) ② 事件綁定 ? 用于子組件向父組件傳遞數(shù)據(jù),可以傳遞任意數(shù)據(jù) ③ 獲取組件實例 ? 父組件還可以通過 this.selectComponent() 獲取子組件實例對象,這樣就可以直

    2024年02月09日
    瀏覽(85)
  • Vue 兄弟組件通信

    在 Vue 3 中,以下是五種常用的方法來實現(xiàn)兄弟組件之間的通信: 使用共享狀態(tài)(Shared State):創(chuàng)建一個共享的數(shù)據(jù)倉庫(store),可以使用 Vuex 或者 Vue 3 的新特性 Composition API 中的 reactive 或 ref 創(chuàng)建一個響應(yīng)式的狀態(tài)對象,并在兄弟組件中引入這個共享狀態(tài)。通過修改共享狀

    2024年01月18日
    瀏覽(22)
  • vue父子組件之間傳值的方法

    父傳子 方式: props 效果: 把父組件的 fatherName 屬性傳入子組件,在子組件中使用 父組件代碼: 子組件代碼: 子傳父 方式: $emit 效果: 在子組件觸發(fā)事件,修改父組件的fatherName屬性 父組件代碼: 子組件代碼: 兄弟傳值 方式: eventBus.js 效果: 任意組件之間相互傳值 代

    2024年02月09日
    瀏覽(94)
  • vue父子組件之間的傳參的幾種方式

    這是最常用的一種方式。通過props選項,在父組件中傳遞數(shù)據(jù)給子組件。在子組件中使用props聲明該屬性,就可以訪問到父組件傳遞過來的數(shù)據(jù)了。 子組件向父組件傳遞數(shù)據(jù)的方式。在子組件中使用emit方法觸發(fā)一個自定義事件,并通過參數(shù)傳遞數(shù)據(jù)。在父組件中監(jiān)聽這個事件

    2023年04月24日
    瀏覽(101)
  • Vue組件通信——父子組件通信的四種方法

    Vue組件通信——父子組件通信的四種方法

    全局引入 在main.js文件中引入并注冊 之后就可以全局使用組件了 局部引入 在父組件中引入 之后就可以在父組件中使用組件了 在子組件 prop 中可以注冊一些自定義組件屬性,父組件調(diào)用子組件時可以向 prop 中的自定義屬性傳值。 子組件代碼: 父組件代碼 prop 也可以通過 v-

    2023年04月16日
    瀏覽(101)
  • vue父子組件之間雙向數(shù)據(jù)綁定的(vue2/vue3)

    vue父子組件之間雙向數(shù)據(jù)綁定的四種方法(vue2/vue3) vue考慮到組件的可維護性,是不允許子組件改變父組件傳的props值的。父組件通過綁定屬性的方式向子組件傳值,而在子組件中可以通過$emit向父組件通信(第一種方式),通過這種間接的方式改變父組件的data,從而實現(xiàn)子組

    2024年02月08日
    瀏覽(89)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包