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

Vue3父組件訪問子組件方法/屬性的五種方案

 更新時間:2025年03月03日 09:43:54   作者:ttod_qzstudio  
在Vue3的組件化開發(fā)中,父子組件間的通信是核心功能之一,本文將詳細(xì)介紹五種父組件訪問子組件屬性/方法的實現(xiàn)方案,包含最新的<script setup>語法糖實踐,需要的朋友可以參考下

一、ref + defineExpose(推薦方案)

通過組合式API實現(xiàn)精準(zhǔn)訪問,這是Vue3官方推薦的核心方式:

<!-- 子組件 Child.vue  -->
<script setup>
import { ref } from 'vue'
 
const childData = ref('子組件數(shù)據(jù)')
const childMethod = () => console.log(' 方法被觸發(fā)')
 
// 必須暴露才能被父組件訪問
defineExpose({
  childData,
  childMethod
})
</script>
 
<!-- 父組件 Parent.vue  -->
<template>
  <Child ref="childRef" />
</template>
 
<script setup>
import { ref, onMounted } from 'vue'
const childRef = ref(null)
 
onMounted(() => {
  console.log(childRef.value.childData)  // 輸出:子組件數(shù)據(jù)
  childRef.value.childMethod()           // 觸發(fā)子組件方法
})
</script>

關(guān)鍵點說明:

  1. 子組件必須通過defineExpose顯式暴露屬性/方法
  2. 父組件通過ref.value 訪問時需注意生命周期時序
  3. 支持TS類型推導(dǎo)(需配合TypeScript使用)

二、getCurrentInstance(備用方案)

適用于需要訪問組件上下文的高級場景:

// 子組件
defineExpose({ customMethod: () => {} })
 
// 父組件
import { getCurrentInstance } from 'vue'
 
const instance = getCurrentInstance()
const childComponent = instance.refs.childRef 
childComponent.customMethod() 

注意事項:

  1. 屬于底層API,建議優(yōu)先使用ref方案
  2. 需要嚴(yán)格保證組件渲染順序
  3. 在SSR環(huán)境中可能出現(xiàn)問題

三、事件驅(qū)動模式(props + emit)

符合單向數(shù)據(jù)流原則的通信方式:

<!-- 子組件 -->
<script setup>
defineProps(['modelValue'])
const emit = defineEmits(['update:modelValue'])
 
const updateData = (val) => {
  emit('update:modelValue', val)
}
</script>
 
<!-- 父組件 -->
<Child :modelValue="parentData" @update:modelValue="handleUpdate"/>

適用場景:

  • 需要維持?jǐn)?shù)據(jù)單向流動
  • 表單組件等需要雙向綁定的情況

四、依賴注入模式(provide/inject)

解決深層嵌套組件訪問問題:

// 祖先組件
provide('sharedData', ref('可響應(yīng)數(shù)據(jù)'))
 
// 后代組件
const data = inject('sharedData')

優(yōu)勢:

  • 跨多層組件直接訪問
  • 配合響應(yīng)式API實現(xiàn)狀態(tài)共享

五、狀態(tài)管理方案(Pinia/Vuex)

全局狀態(tài)管理場景下的訪問方式:

// store/userStore.js 
export const useUserStore = defineStore('user', {
  state: () => ({ userInfo: null })
})
 
// 任意組件
const store = useUserStore()
store.userInfo  = '全局?jǐn)?shù)據(jù)'

適用場景:

  • 需要跨多組件共享狀態(tài)
  • 復(fù)雜應(yīng)用的狀態(tài)管理

注意事項與最佳實踐

  1. 單向數(shù)據(jù)流原則:優(yōu)先考慮props/emit方式傳遞數(shù)據(jù)
  2. 封裝性保護(hù):子組件應(yīng)明確暴露的最小API集合
  3. 生命周期時序:確保在onMounted之后訪問ref
  4. TypeScript支持:使用interface定義暴露類型

方案對比表

方法適用層級響應(yīng)式維護(hù)成本適用場景
ref + defineExpose父子??精準(zhǔn)方法調(diào)用
provide/inject跨級??深層組件共享
事件驅(qū)動父子??數(shù)據(jù)變更通知
狀態(tài)管理全局??復(fù)雜應(yīng)用狀態(tài)共享

到此這篇關(guān)于Vue3父組件訪問子組件方法/屬性的五種方案的文章就介紹到這了,更多相關(guān)Vue3父組件訪問子組件方法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue如何修改瀏覽器的標(biāo)題title

    vue如何修改瀏覽器的標(biāo)題title

    這篇文章主要介紹了vue如何修改瀏覽器的標(biāo)題title問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • Vue.js實現(xiàn)多條件篩選、搜索、排序及分頁的表格功能

    Vue.js實現(xiàn)多條件篩選、搜索、排序及分頁的表格功能

    這篇文章主要為大家詳細(xì)介紹了Vue.js實現(xiàn)多條件篩選、搜索、排序及分頁的表格功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • vue+element實現(xiàn)動態(tài)換膚的示例代碼

    vue+element實現(xiàn)動態(tài)換膚的示例代碼

    本文主要介紹了vue+element實現(xiàn)動態(tài)換膚的示例代碼,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • 從基礎(chǔ)到高級應(yīng)用詳解Vue3中自定義指令的完整指南

    從基礎(chǔ)到高級應(yīng)用詳解Vue3中自定義指令的完整指南

    自定義指令是 Vue.js 中一個強大而靈活的特性,它允許開發(fā)者直接對 DOM 元素進(jìn)行底層操作,本文將深入探討 Vue3 中自定義指令的定義方式、生命周期鉤子、使用場景和最佳實踐,快跟隨小編一起學(xué)習(xí)一下吧
    2025-11-11
  • vue-json-viewer展示JSON內(nèi)容實踐

    vue-json-viewer展示JSON內(nèi)容實踐

    這篇文章主要介紹了vue-json-viewer展示JSON內(nèi)容實踐,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2026-03-03
  • 使用Vue簡單實現(xiàn)一個上拉加載更多分頁組件

    使用Vue簡單實現(xiàn)一個上拉加載更多分頁組件

    上拉加載更多的分頁功能大家應(yīng)該都見過或者使用過了吧,那么有多少同學(xué)自己實現(xiàn)過嗎,本文我們來簡單實現(xiàn)一個上拉加載更多分頁組件吧
    2024-11-11
  • vue項目網(wǎng)頁自適應(yīng)等比例放大縮小實例代碼

    vue項目網(wǎng)頁自適應(yīng)等比例放大縮小實例代碼

    等比例縮放可以在不同的分辨率下都能夠一屏展示,不會有滾動條的問題,也不會有適配問題,下面這篇文章主要給大家介紹了關(guān)于vue項目網(wǎng)頁自適應(yīng)等比例放大縮小的相關(guān)資料,需要的朋友可以參考下
    2022-11-11
  • vue項目登錄成功后退出時清空sessionId和userId的問題

    vue項目登錄成功后退出時清空sessionId和userId的問題

    這篇文章主要介紹了vue項目登錄成功后退出時清空sessionId和userId的問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • 詳解VUE前端按鈕權(quán)限控制

    詳解VUE前端按鈕權(quán)限控制

    這篇文章主要介紹了VUE前端按鈕權(quán)限控制,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • Vue實現(xiàn)隨機驗證碼功能

    Vue實現(xiàn)隨機驗證碼功能

    這篇文章主要為大家詳細(xì)介紹了Vue實現(xiàn)隨機驗證碼功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-12-12

最新評論

句容市| 金寨县| 沁阳市| 阳高县| 镇沅| 顺平县| 南昌县| 万载县| 游戏| 雷山县| 介休市| 新乡市| 淄博市| 新余市| 祥云县| 怀来县| 界首市| 沈丘县| 庆城县| 四川省| 武城县| 察哈| 舒城县| 额济纳旗| 绥芬河市| 巨鹿县| 吴桥县| 勃利县| 稷山县| 甘德县| 龙陵县| 揭阳市| 平阴县| 建水县| 牟定县| 平谷区| 阿瓦提县| 甘南县| 静安区| 聊城市| 连城县|