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

Vue3父子組件互調(diào)方法的實(shí)現(xiàn)

 更新時(shí)間:2022年04月14日 11:59:47   作者:訾博ZiBo  
本文主要介紹了Vue3父子組件互調(diào)方法的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

下面演示均為使用 setup 語(yǔ)法糖的情況!

一、父組件調(diào)用子組件方法

下面演示為使用 setup 語(yǔ)法糖的情況,值得注意的是子組件需要使用 defineExpose 對(duì)外暴露方法,父組件才可以調(diào)用!

1、子組件

<template>
</template>

<script setup lang="ts">
// 第一步:定義子組件里面的方法
const doSth = (str: string) => {
  console.log("子組件的 doSth 方法執(zhí)行了!" + str);
}
// 第二步:暴露方法
defineExpose({ doSth })
</script>

<style scoped>
</style>

2、父組件

<template>
  <button @click="getChild">觸發(fā)子組件方法</button>
  <!-- 第一步:定義 ref -->
  <HelloWorld ref="childRef" />
</template>

<script setup lang="ts">
// 一、導(dǎo)入
import { ref } from 'vue';
import HelloWorld from './components/HelloWorld.vue';

// 二、數(shù)據(jù)
// 第二步:定義與 ref 同名變量
const childRef = ref<any>();

// 三、函數(shù)
const getChild = () => {
    // 第三步: 調(diào)用子組件的方法或者變量,通過(guò)value
    childRef.value.doSth("隨便傳值!");
}
</script>

<style>
</style>

3、測(cè)試結(jié)果

請(qǐng)?zhí)砑訄D片描述

4、關(guān)于 defineExpose 的官方文檔

網(wǎng)址:https://v3.cn.vuejs.org/api/sfc-script-setup.html#defineexpose

defineExpose

使用 <script setup> 的組件是默認(rèn)關(guān)閉的,也即通過(guò)模板 ref 或者 $parent 鏈獲取到的組件的公開實(shí)例,不會(huì)暴露任何在 <script setup> 中聲明的綁定。

為了在 <script setup> 組件中明確要暴露出去的屬性,使用 defineExpose 編譯器宏:

<script setup>
import { ref } from 'vue'

const a = 1
const b = ref(2)

defineExpose({
  a,
  b
})
</script>

當(dāng)父組件通過(guò)模板 ref 的方式獲取到當(dāng)前組件的實(shí)例,獲取到的實(shí)例會(huì)像這樣 { a: number, b: number } (ref 會(huì)和在普通實(shí)例中一樣被自動(dòng)解包)。

二、子組件調(diào)用父組件方法

1、子組件

<template>
</template>

<script setup lang="ts">
import { onMounted } from "@vue/runtime-core";
const emit = defineEmits([ "doSth" ]);
const doSth = () => {
  emit('doSth');
}
onMounted(() => {
  doSth();
});
</script>

<style scoped>
</style>

2、父組件

<template>
  <!-- 第一步:使用 @do-sth 或 @doSth 接受方法 -->
  <HelloWorld @doSth="sayHello" />
</template>

<script setup lang="ts">
// 一、導(dǎo)入
import HelloWorld from './components/HelloWorld.vue';

// 二、函數(shù)
// 第二步: 自定義方法
const sayHello = () => {
  console.log("hello world!");
}
</script>

<style>
</style>

3、測(cè)試結(jié)果

請(qǐng)?zhí)砑訄D片描述

4、關(guān)于 defineEmits 的官方文檔

網(wǎng)址:https://v3.cn.vuejs.org/api/sfc-script-setup.html#defineprops-和-defineemits

definePropsdefineEmits

<script setup> 中必須使用 definePropsdefineEmits API 來(lái)聲明 propsemits ,它們具備完整的類型推斷并且在 <script setup> 中是直接可用的:

<script setup>
const props = defineProps({
  foo: String
})

const emit = defineEmits(['change', 'delete'])
// setup code
</script>
  • defineProps 和 defineEmits 都是只在 <script setup> 中才能使用的編譯器宏。他們不需要導(dǎo)入且會(huì)隨著 <script setup> 處理過(guò)程一同被編譯掉。
  • defineProps 接收與 props 選項(xiàng)相同的值,defineEmits 也接收 emits 選項(xiàng)相同的值。
  • defineProps 和 defineEmits 在選項(xiàng)傳入后,會(huì)提供恰當(dāng)?shù)念愋屯茢唷?/li>
  • 傳入到 defineProps 和 defineEmits 的選項(xiàng)會(huì)從 setup 中提升到模塊的范圍。因此,傳入的選項(xiàng)不能引用在 setup 范圍中聲明的局部變量。這樣做會(huì)引起編譯錯(cuò)誤。但是,它可以引用導(dǎo)入的綁定,因?yàn)樗鼈円苍谀K范圍內(nèi)。

如果使用了 Typescript,使用純類型聲明來(lái)聲明 prop 和 emits 也是可以的。

到此這篇關(guān)于Vue3父子組件互調(diào)方法的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Vue3父子組件互調(diào)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 淺析Vue 中的 render 函數(shù)

    淺析Vue 中的 render 函數(shù)

    在vue中我們使用模板HTML語(yǔ)法組建頁(yè)面的,使用render函數(shù)我們可以用js語(yǔ)言來(lái)構(gòu)建DOM,今天小編就通過(guò)本文給大家簡(jiǎn)單介紹下Vue 中 render 函數(shù),需要的朋友可以參考下
    2020-02-02
  • vue表單自定義校驗(yàn)規(guī)則介紹

    vue表單自定義校驗(yàn)規(guī)則介紹

    今天小編就為大家分享一篇vue表單自定義校驗(yàn)規(guī)則介紹,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-08-08
  • 詳解如何在vue項(xiàng)目中引入elementUI組件

    詳解如何在vue項(xiàng)目中引入elementUI組件

    這篇文章主要介紹了詳解如何在vue項(xiàng)目中引入elementUI組件,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-02-02
  • vue自定義指令用法經(jīng)典實(shí)例小結(jié)

    vue自定義指令用法經(jīng)典實(shí)例小結(jié)

    這篇文章主要介紹了vue自定義指令用法,結(jié)合實(shí)例形式總結(jié)分析了vue自定義指令常見(jiàn)寫法與相關(guān)操作注意事項(xiàng),需要的朋友可以參考下
    2019-03-03
  • vue與electron實(shí)現(xiàn)進(jìn)程間的通信詳情

    vue與electron實(shí)現(xiàn)進(jìn)程間的通信詳情

    這篇文章主要介紹了vue與electron實(shí)現(xiàn)進(jìn)程間的通信詳情,本文主要介紹electron渲染進(jìn)程和主進(jìn)程間的通信,以及在渲染進(jìn)程和主進(jìn)程中常用的配置項(xiàng),需要的朋友可以參考一下
    2022-09-09
  • 詳解vue使用vue-layer-mobile組件實(shí)現(xiàn)toast,loading效果

    詳解vue使用vue-layer-mobile組件實(shí)現(xiàn)toast,loading效果

    這篇文章主要介紹了詳解vue使用vue-layer-mobile組件實(shí)現(xiàn)toast,loading效果,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-08-08
  • vue播放flv、m3u8視頻流(監(jiān)控)的方法實(shí)例

    vue播放flv、m3u8視頻流(監(jiān)控)的方法實(shí)例

    隨著前端大屏頁(yè)面的逐漸壯大,客戶的...其中實(shí)時(shí)播放監(jiān)控的需求逐步增加,視頻流格式也是有很多種,用到最多的.flv、.m3u8,下面這篇文章主要給大家介紹了關(guān)于vue播放flv、m3u8視頻流(監(jiān)控)的相關(guān)資料,需要的朋友可以參考下
    2023-04-04
  • Vue組件實(shí)現(xiàn)評(píng)論區(qū)功能

    Vue組件實(shí)現(xiàn)評(píng)論區(qū)功能

    這篇文章主要為大家詳細(xì)介紹了Vue組件實(shí)現(xiàn)評(píng)論區(qū)功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • vue 獲取攝像頭拍照并旋轉(zhuǎn)、裁剪生成新的圖片功能實(shí)現(xiàn)

    vue 獲取攝像頭拍照并旋轉(zhuǎn)、裁剪生成新的圖片功能實(shí)現(xiàn)

    本文給大家介紹vue 獲取攝像頭拍照并旋轉(zhuǎn)、裁剪生成新的圖片功能實(shí)現(xiàn),主要步驟包括初始化、獲取攝像頭權(quán)限、切換攝像頭、拍照以及對(duì)圖片進(jìn)行旋轉(zhuǎn)和裁剪,同時(shí)提到了使用opencv.js和cropperjs進(jìn)行自動(dòng)裁剪和手動(dòng)裁剪的實(shí)現(xiàn),感興趣的朋友跟隨小編一起看看吧
    2024-12-12
  • Vue狀態(tài)管理庫(kù)Pinia詳細(xì)介紹

    Vue狀態(tài)管理庫(kù)Pinia詳細(xì)介紹

    這篇文章主要介紹了Vue3-pinia狀態(tài)管理,pinia是 vue3 新的狀態(tài)管理工具,簡(jiǎn)單來(lái)說(shuō)相當(dāng)于之前 vuex,它去掉了 Mutations 但是也是支持 vue2 的,需要的朋友可以參考下
    2022-08-08

最新評(píng)論

敦煌市| 北流市| 荣昌县| 庆安县| 沂水县| 库车县| 忻城县| 来安县| 香格里拉县| 青河县| 营口市| 秭归县| 临沧市| 大关县| 洪泽县| 竹山县| 甘泉县| 白银市| 巨野县| 乐业县| 嘉峪关市| 边坝县| 张家川| 信阳市| 井研县| 西藏| 凤山市| 威宁| 腾冲县| 蒲江县| 沂水县| 游戏| 陆丰市| 静海县| 甘德县| 永寿县| 邵东县| 山丹县| 天台县| 崇信县| 兴安盟|