欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

vue3中setup語法糖下父子組件間傳遞數(shù)據(jù)的方式

 更新時(shí)間:2023年06月06日 17:18:13   作者:愛學(xué)習(xí)的Akali King  
Vue3中父組件指的是包含一個(gè)或多個(gè)子組件的組件,它們通過props和事件等方式來傳遞數(shù)據(jù)和通信,這篇文章主要介紹了vue3中setup語法糖下父子組件間傳遞數(shù)據(jù)的方式,需要的朋友可以參考下

vue3中setup語法糖下父子組件之間如何傳遞數(shù)據(jù)

先弄明白什么是父子組件

?父子組件,分為父組件和子組件。

Vue3中,父組件指的是包含一個(gè)或多個(gè)子組件的組件,它們通過props和事件等方式來傳遞數(shù)據(jù)和通信。子組件則是被父組件所包含的組件,它們通常會(huì)接收來自父組件的數(shù)據(jù),并根據(jù)這些數(shù)據(jù)渲染自身。在Vue3中,使用<template>標(biāo)簽來定義父組件和子組件,同時(shí)也可以使用其他標(biāo)簽如<div>, <span>等等。

父傳子

在Vue 3的<script setup>語法糖中,父組件向子組件傳遞數(shù)據(jù)可以通過props實(shí)現(xiàn)。而子組件接收父組件傳遞過來的數(shù)據(jù)也是通過props進(jìn)行。

下面以一個(gè)簡單的例子來說明:

???父組件:(文件名為ParentComponent.vue)
html代碼

<template>
  <div>
    <h1>{{ message }}</h1>
    <ChildComponent :childMessage="message" />
  </div>
</template>

js代碼

<script setup>
import ChildComponent from './ChildComponent.vue';
const message = 'Hello, Vue3!';
</script>

???子組件:(文件名為ChildComponent.vue)
html代碼

<template>
  <div>
    <h2>{{ childMessage }}</h2>
  </div>
</template>

js代碼

<template>
  <div>
    <h2>{{ childMessage }}</h2>
  </div>
</template>

在父組件中,我們定義了一個(gè)message變量,并將其作為prop傳遞給子組件。在子組件中,我們通過聲明式props接收了父組件傳遞過來的childMessage變量,并將其顯示在頁面上。

如此一來,父組件就可以向子組件傳遞數(shù)據(jù)了。如果需要更新數(shù)據(jù),則可以在父組件中直接修改message變量即可。由于子組件接收的是prop值的副本,所以不會(huì)影響到原始數(shù)據(jù)。

子傳父

在Vue 3的<script setup>語法糖中,子組件向父組件傳遞數(shù)據(jù)可以通過emit事件實(shí)現(xiàn)。而父組件接收子組件傳遞過來的數(shù)據(jù)也是通過監(jiān)聽emit事件進(jìn)行。

???父組件:(文件名為ParentComponent.vue)
html代碼

<template>
  <div>
    <h1>{{ message }}</h1>
    <ChildComponent @update-message="handleUpdateMessage" />
  </div>
</template>

js代碼

<script setup>
import ChildComponent from './ChildComponent.vue';
const message = 'Hello, Vue3!';
function handleUpdateMessage(newMessage) {
  message.value = newMessage;
}
</script>

???子組件:(文件名為ChildComponent.vue)
html代碼

<template>
  <div>
    <input v-model="childMessage" />
    <button @click="handleClick">Update Message</button>
  </div>
</template>

js代碼

<script setup props="['childMessage']" emits="update-message">
import { defineEmits } from 'vue';
const emit = defineEmits(['update-message']);
function handleClick() {
  emit('update-message', childMessage.value);
}
</script>

同理
在子組件中,我們首先定義了emits屬性,并聲明了要發(fā)射的事件名為update-message。然后,在處理點(diǎn)擊事件的函數(shù)中,我們通過emit()方法觸發(fā)了該事件,并將輸入框中綁定的childMessage值作為參數(shù)傳遞給了父組件。

在父組件中,我們使用@update-message監(jiān)聽了子組件發(fā)射的update-message事件,并調(diào)用了名為handleUpdateMessage()的方法來更新父組件的message變量。

如此一來,子組件就可以向父組件傳遞數(shù)據(jù)了。如果需要更新數(shù)據(jù),則可以在子組件中通過emit事件將新的值傳遞給父組件。由于父組件監(jiān)聽了該事件,所以會(huì)及時(shí)接收到傳遞過來的值,并進(jìn)行相應(yīng)的處理。

組件間通信都有哪些方式

在vue框架中,能實(shí)現(xiàn)組件間通信的,不只有父子組件一種??偨Y(jié)一下有以下4種:

父子組件通信:
通過 props 屬性將數(shù)據(jù)從父組件傳遞給子組件,通過 $emit方法觸發(fā)事件并傳遞數(shù)據(jù)來實(shí)現(xiàn)子組件向父組件通信。

兄弟組件通信:
可以使用一個(gè)共同的父組件作為中介,在兄弟組件中分別通過 $parent屬性訪問該父組件,并通過該父組件來進(jìn)行數(shù)據(jù)傳遞和事件觸發(fā)。

跨級(jí)祖先后代組件通信:
可以使用 provideinject 來進(jìn)行跨級(jí)傳遞數(shù)據(jù),或者使用 event bus(事件總線)等方式來實(shí)現(xiàn)。

Vuex 狀態(tài)管理器:Vuex 是一種專門用于 Vue應(yīng)用程序狀態(tài)管理的庫。它提供了集中式存儲(chǔ)管理應(yīng)用程序的所有組件的狀態(tài),并提供了一些規(guī)則來保證狀態(tài)變更是可預(yù)測的。通過 Vuex 的 store 實(shí)例,不同的 Vue 組件可以共享同一個(gè)狀態(tài),并且對(duì)這個(gè)狀態(tài)進(jìn)行更改會(huì)被自動(dòng)監(jiān)控到。因此,在需要大量復(fù)雜交互場景下建議使用Vuex 進(jìn)行全局狀態(tài)管理。

父子組件通信和兄弟組件通信的區(qū)別

一般最常用的就是父子組件和兄弟組件的通信,兩種通信到底有何區(qū)別?也可以總結(jié)出3點(diǎn)不同之處:

1.父子組件之間的通信是單向的,即父組件向子組件傳遞數(shù)據(jù)或子組件向父組件傳遞數(shù)據(jù),而兄弟組件之間的通信是雙向的,即兄弟組件之間可以相互傳遞數(shù)據(jù)。
2.父子組件之間的通信通常使用props和自定義事件,而兄弟組件之間的通信通常使用Vue的全局事件或Vuex。
3.父子組件之間的通信通常比較簡單,適用于組件之間的簡單交互,而兄弟組件之間的通信通常比較復(fù)雜,適用于組件之間的高級(jí)交互,例如多級(jí)組件之間的聯(lián)動(dòng)。

到此這篇關(guān)于vue3中setup語法糖下父子組件之間如何傳遞數(shù)據(jù)的文章就介紹到這了,更多相關(guān)vue3父子組件傳遞數(shù)據(jù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue使用$store.commit() undefined報(bào)錯(cuò)的解決

    vue使用$store.commit() undefined報(bào)錯(cuò)的解決

    這篇文章主要介紹了vue使用$store.commit() undefined報(bào)錯(cuò)的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • vue使用mui遇到的坑及解決

    vue使用mui遇到的坑及解決

    這篇文章主要介紹了vue使用mui遇到的坑及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • vue使用html2canvas實(shí)現(xiàn)將DOM節(jié)點(diǎn)生成對(duì)應(yīng)的PDF

    vue使用html2canvas實(shí)現(xiàn)將DOM節(jié)點(diǎn)生成對(duì)應(yīng)的PDF

    這篇文章主要為大家詳細(xì)介紹了vue如何使用html2canvas實(shí)現(xiàn)將DOM節(jié)點(diǎn)生成對(duì)應(yīng)的PDF,文中的示例代碼簡潔易懂,感興趣的小伙伴可以學(xué)習(xí)一下
    2023-08-08
  • Vue組件之自定義事件的功能圖解

    Vue組件之自定義事件的功能圖解

    本文通過圖文并茂的形式給大家介紹了Vue組件之自定義事件的功能,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2018-02-02
  • vue項(xiàng)目兩種方式實(shí)現(xiàn)豎向表格的思路分析

    vue項(xiàng)目兩種方式實(shí)現(xiàn)豎向表格的思路分析

    這篇文章主要介紹了vue項(xiàng)目兩種方式實(shí)現(xiàn)豎向表格的思路分析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • Vue?watch中監(jiān)聽值的變化,判斷后修改值方式

    Vue?watch中監(jiān)聽值的變化,判斷后修改值方式

    這篇文章主要介紹了Vue?watch中監(jiān)聽值的變化,判斷后修改值方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • Vite打包時(shí)去除console的方法實(shí)現(xiàn)

    Vite打包時(shí)去除console的方法實(shí)現(xiàn)

    Vite打包項(xiàng)目時(shí),需要去除開發(fā)時(shí)加入的console、debugger調(diào)試信息,本文主要介紹了Vite打包時(shí)去除console的方法實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-08-08
  • vue實(shí)現(xiàn)下拉多選、可搜索、全選功能(示例代碼)

    vue實(shí)現(xiàn)下拉多選、可搜索、全選功能(示例代碼)

    本文介紹了如何在Vue中實(shí)現(xiàn)一個(gè)樹形結(jié)構(gòu)的下拉多選組件,支持任意一級(jí)選項(xiàng)的選擇,全選功能,以及搜索功能,通過在mounted生命周期中獲取數(shù)據(jù),并使用handleTree函數(shù)將接口返回的數(shù)據(jù)整理成樹形結(jié)構(gòu),實(shí)現(xiàn)了這一功能,感興趣的朋友一起看看吧
    2025-01-01
  • Vue實(shí)現(xiàn)阻止瀏覽器記住密碼功能的三種方法

    Vue實(shí)現(xiàn)阻止瀏覽器記住密碼功能的三種方法

    本文主要介紹了Vue實(shí)現(xiàn)阻止瀏覽器記住密碼功能的三種方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • Vue router的addRoute方法實(shí)現(xiàn)控制權(quán)限方法詳解

    Vue router的addRoute方法實(shí)現(xiàn)控制權(quán)限方法詳解

    這篇文章主要介紹了vue動(dòng)態(tài)路由添加,vue-router的addRoute方法實(shí)現(xiàn)權(quán)限控制流程,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2022-09-09

最新評(píng)論