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

Vue組件中的自定義事件你了解多少

 更新時(shí)間:2022年02月16日 11:30:03   作者:我會(huì)努力變強(qiáng)的  
這篇文章主要為大家詳細(xì)介紹了Vue組件中的自定義事件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助

主要介紹組件的自定義事件的概念,使用等。

何為組件自定義事件:

  • 組件自定義事件是一種組件間的通信方式,方向是 子組件====>父組件。
  • 使用場(chǎng)景:A是子組件,B是父組件,如果要把B的數(shù)據(jù)傳給A,可以使用props配置項(xiàng),如果要把A的數(shù)據(jù)轉(zhuǎn)給B,就要用到組件自定義事件或者使用props加回調(diào)函數(shù)也可實(shí)現(xiàn)。

先使用props加回調(diào)函數(shù)實(shí)現(xiàn)子組件傳遞數(shù)據(jù)給父組件。

在這里插入圖片描述

main.js:

//引入vue依賴
import Vue from 'vue'
//引入組件App
import App from './App.vue'
// 關(guān)閉生產(chǎn)提示
Vue.config.productionTip = false
//創(chuàng)建一個(gè)vue實(shí)例
new Vue({
  //這個(gè)目前還沒學(xué)過,先知道他的作用是將app放入容器中。
  render: h => h(App),
  //配置該vue實(shí)例管理id為app的容器
}).$mount('#app')

App.vue:

<template>
    <!-- 編寫結(jié)構(gòu) -->
    <div>
        <!-- 傳遞回調(diào)函數(shù)給子組件School -->
        <school :getSchoolNameFromSchoolVc="getSchoolNameFromSchoolVc"></school>
    <hr>
    <student></student>
    <div>App獲取School子組件的學(xué)校名:{{schoolNameFromSchool}}</div>
    </div>
</template>
<script>
// 原本的引入
// import school from "./School.vue"
// import student from "./Student.vue"
//修改后的
//引入school組件和student組件,涉及es模塊化的語(yǔ)法
import school from "./components/School.vue"
import student from "./components/Student.vue"
export default {
    data() {
        return {
            schoolNameFromSchool:""
        }
    },
    components:{
        //注冊(cè)組件
        school,
        student
    },
    methods:{
        //定義一個(gè)回調(diào)函數(shù)并傳遞給子組件School
        getSchoolNameFromSchoolVc(schoolName){
            console.log("App獲取School子組件的學(xué)校名:",schoolName);
            //賦值給schoolNameFromSchool
            this.schoolNameFromSchool = schoolName;
        }
    }
}
</script>
<style>
</style>

schoo.vue:

<template>
    <!-- 編寫組件結(jié)構(gòu)代碼,也就是html代碼 -->
    <!-- 需要一個(gè)div括住,也就是只能有一個(gè)根元素,一般使用div -->
    <div class="orange">
        <div>學(xué)校:{{schoolName}}</div>
        <div>地址:{{schoolAddress}}</div>
        <!-- //定義一個(gè)按鈕,點(diǎn)擊傳遞學(xué)校名稱給App組件。 -->
        <button @click="sendSchoolNameToApp">傳遞學(xué)校名給App組件</button>
    </div>
</template>
<script>
//交互代碼編寫的地方,需要暴露出去給其他地方引入
//這個(gè)需要有一點(diǎn)es6模塊化的知識(shí),這里一般使用默認(rèn)暴露,因?yàn)檫@是單文件組件,只需要暴露一個(gè)組件對(duì)象,
//并且引入默認(rèn)暴露的組件引入語(yǔ)法比較簡(jiǎn)單。
export default {
    data() {
        return {
        schoolName:"尚硅谷",
        schoolAddress:"北京"
        }
    },
    //接收回調(diào)函數(shù)
    props:["getSchoolNameFromSchoolVc"],
    methods:{
       sendSchoolNameToApp(){
           //調(diào)用回調(diào)函數(shù),并把學(xué)校名傳遞進(jìn)去
           this.getSchoolNameFromSchoolVc(this.schoolName)
       }     
    }
}
</script>
<style scoped>
    /* 編寫樣式的地方 */
    .orange{
        background-color: orange;
    }
</style>

student.vue:

<template>
    <!-- 編寫組件結(jié)構(gòu)代碼,也就是html代碼 -->
    <!-- 需要一個(gè)div括住,也就是只能有一個(gè)根元素,一般使用div -->
    <div class="orange">
        <div>學(xué)生姓名:{{studentName}}</div>
        <div>年齡:{{studentAge}}</div>
    </div>
</template>
<script>
//交互代碼編寫的地方,需要暴露出去給其他地方引入
//這個(gè)需要有一點(diǎn)es6模塊化的知識(shí),這里一般使用默認(rèn)暴露,因?yàn)檫@是單文件組件,只需要暴露一個(gè)組件對(duì)象,
//并且引入默認(rèn)暴露的組件引入語(yǔ)法比較簡(jiǎn)單。
export default {
    data() {
        return {
        studentName:"張三",
        studentAge:18
        }
    },
}
</script>
<style>
    /* 編寫樣式的地方 */
    .orange{
        background-color: gray;
    }
</style>

這種方式的流程:

1.在父組件(App)中定義一個(gè)回調(diào)方法并傳遞給子組件(School)。

在這里插入圖片描述

在這里插入圖片描述

該回調(diào)方法是把School組件傳遞過來(lái)的學(xué)校名渲染在App組件對(duì)應(yīng)的區(qū)域。

2.子組件使用props配置項(xiàng)接收回調(diào)函數(shù),并且編寫一個(gè)按鈕,點(diǎn)擊就調(diào)用該回調(diào)函數(shù)把數(shù)據(jù)傳遞到App組件中。

在這里插入圖片描述

在這里插入圖片描述

效果:

在這里插入圖片描述

在這里插入圖片描述

第二種方式是使用組件自定義事件實(shí)現(xiàn):

使用組件自定義事件實(shí)現(xiàn)把子組件Student的學(xué)生名傳遞到App組件,并進(jìn)行渲染。

分一下步驟:

3. 在父組件App中,設(shè)置自定義事件,并配置一個(gè)事件回調(diào)

在這里插入圖片描述

在這里插入圖片描述

4. 在子組件中,觸發(fā)自定義事件,把值傳過去。

在這里插入圖片描述

在這里插入圖片描述

效果:

在這里插入圖片描述

除了在組件標(biāo)簽中綁定自定義事件,也可以配合ref屬性在生命周期回調(diào)函數(shù)$mounted中進(jìn)行綁定。

在這里插入圖片描述

在這里插入圖片描述

執(zhí)行效果一樣的。

自定義事件照樣可以使用事件修飾符once。

在這里插入圖片描述

在這里插入圖片描述

使用props或者組件自定義事件進(jìn)行子組件像父組件傳遞數(shù)據(jù)的方式是比較像的。

props的方式是直接把回調(diào)函數(shù)傳遞給子組件調(diào)用。

而組件自定義事件是把回調(diào)函數(shù)通過事件的方式暴露出去,然后子組件通過觸發(fā)事件,達(dá)到調(diào)用回調(diào)函數(shù)的效果。

解綁組件自定義事件:

在這里插入圖片描述

或者組件被銷毀時(shí),這些自定義事件會(huì)被銷毀。

總結(jié)

本篇文章就到這里了,希望能夠給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!      

相關(guān)文章

  • VueCli3.0中集成MockApi的方法示例

    VueCli3.0中集成MockApi的方法示例

    這篇文章主要介紹了VueCli3.0中集成MockApi的方法示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • Vue-cli3 $ is not defined錯(cuò)誤問題及解決

    Vue-cli3 $ is not defined錯(cuò)誤問題及解決

    這篇文章主要介紹了Vue-cli3 $ is not defined錯(cuò)誤問題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • vue3使用svg圖標(biāo)的多種方式總結(jié)

    vue3使用svg圖標(biāo)的多種方式總結(jié)

    svg圖片在項(xiàng)目中使用的非常廣泛,下面這篇文章主要給大家介紹了關(guān)于vue3使用svg圖標(biāo)的多種方式,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-03-03
  • element-ui?table表格控件實(shí)現(xiàn)單選功能代碼實(shí)例

    element-ui?table表格控件實(shí)現(xiàn)單選功能代碼實(shí)例

    這篇文章主要給大家介紹了關(guān)于element-ui?table表格控件實(shí)現(xiàn)單選功能的相關(guān)資料,單選框是指在?Element?UI?的表格組件中,可以通過單選框來(lái)選擇一行數(shù)據(jù)。用戶只能選擇一行數(shù)據(jù),而不能同時(shí)選擇多行,需要的朋友可以參考下
    2023-09-09
  • vue3父子通信ref,toRef,toRefs使用實(shí)例詳解

    vue3父子通信ref,toRef,toRefs使用實(shí)例詳解

    這篇文章主要介紹了vue3父子通信ref,toRef,toRefs使用實(shí)例詳解,分別介紹了ref是什么、toRef是什么及toRefs是什么和最佳使用方式,結(jié)合示例代碼給大家講解的非常詳細(xì),需要的朋友可以參考下
    2023-10-10
  • vue組件數(shù)據(jù)傳遞、父子組件數(shù)據(jù)獲取,slot,router路由功能示例

    vue組件數(shù)據(jù)傳遞、父子組件數(shù)據(jù)獲取,slot,router路由功能示例

    這篇文章主要介紹了vue組件數(shù)據(jù)傳遞、父子組件數(shù)據(jù)獲取,slot,router路由功能,結(jié)合實(shí)例形式分析了vue.js組件數(shù)據(jù)傳遞、路由相關(guān)概念、原理及相關(guān)操作技巧,需要的朋友可以參考下
    2019-03-03
  • 使用vue2.0創(chuàng)建的項(xiàng)目的步驟方法

    使用vue2.0創(chuàng)建的項(xiàng)目的步驟方法

    這篇文章主要介紹了使用vue2.0創(chuàng)建的項(xiàng)目的步驟方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧
    2018-09-09
  • Vue3樣式滲透之deep()為什么無(wú)效詳解

    Vue3樣式滲透之deep()為什么無(wú)效詳解

    項(xiàng)目開發(fā)中因?yàn)閡i設(shè)計(jì)常常需要修改vue常用的組件庫(kù)(element,antD等等),這就需要用到樣式穿透,下面這篇文章主要給大家介紹了關(guān)于Vue3樣式滲透之deep()為什么無(wú)效的相關(guān)資料,需要的朋友可以參考下
    2022-11-11
  • 基于elementUI豎向表格、和并列的案例

    基于elementUI豎向表格、和并列的案例

    這篇文章主要介紹了基于elementUI豎向表格、和并列的案例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧
    2020-10-10
  • vue3安裝配置sass的詳細(xì)步驟

    vue3安裝配置sass的詳細(xì)步驟

    sass是css的預(yù)處理器,擴(kuò)展了css語(yǔ)言,提供了規(guī)則、變量、混入、選擇器、繼承、內(nèi)置函數(shù)等特性,有助于減少CSS重復(fù)的代碼,節(jié)省開發(fā)時(shí)間,下面這篇文章主要給大家介紹了關(guān)于vue3安裝配置sass的相關(guān)資料,需要的朋友可以參考下
    2022-12-12

最新評(píng)論

礼泉县| 阿克陶县| 华宁县| 察雅县| 雅安市| 温州市| 邳州市| 阿拉善盟| 广德县| 南岸区| 苍梧县| 澄城县| 莆田市| 长海县| 教育| 景泰县| 本溪| 永昌县| 余庆县| 安乡县| 建阳市| 安达市| 黄大仙区| 丘北县| 固始县| 顺昌县| 乐亭县| 聂拉木县| 上栗县| 大关县| 大安市| 沐川县| 长岭县| 大埔县| 运城市| 泌阳县| 和静县| 上高县| 铜梁县| 古浪县| 广平县|