亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

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

先弄明白什么是父子組件

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

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

父傳子

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

下面以一個簡單的例子來說明:

???父組件:(文件名為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>

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

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

子傳父

在Vue 3的<script setup>語法糖中,子組件向父組件傳遞數(shù)據(jù)可以通過emit事件實現(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。然后,在處理點擊事件的函數(shù)中,我們通過emit()方法觸發(fā)了該事件,并將輸入框中綁定的childMessage值作為參數(shù)傳遞給了父組件。

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

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

組件間通信都有哪些方式

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

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

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

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

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

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

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

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

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

相關(guān)文章

  • vue使用$store.commit() undefined報錯的解決

    vue使用$store.commit() undefined報錯的解決

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

    vue使用mui遇到的坑及解決

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

最新評論