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

Vue組件通信之父?jìng)髯优c子傳父詳細(xì)講解

 更新時(shí)間:2022年10月27日 10:30:46   作者:東非不開(kāi)森  
這篇文章主要介紹了React中父子組件通信詳解,在父組件中,為子組件添加屬性數(shù)據(jù),即可實(shí)現(xiàn)父組件向子組件通信,文章通過(guò)圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下

父組件傳遞給子組件

  • 父組件傳遞給子組件:通過(guò)props屬性;
  • 子組件傳遞給父組件:通過(guò)$emit觸發(fā)事件;

這里我們知道,父組件有一些數(shù)據(jù)需要子組件來(lái)進(jìn)行展示,那我們可以通過(guò)props來(lái)完成組件之間的通信

通過(guò)props來(lái)完成組件之間的通信

淺談Props

那么什么是Props呢?

  • 作用:接受父組件傳遞過(guò)來(lái)的屬性
  • Props是你可以在組件上注冊(cè)一些自定義的attribute(屬性);
  • 父組件給這些attribute(屬性)賦值,子組件通過(guò)attribute的名稱(chēng)獲取到對(duì)應(yīng)的值;

在使用 script setup的單文件組件中,props 可以使用 defineProps() 宏來(lái)聲明:

<script setup>
const props = defineProps(['foo'])
console.log(props.foo)
</script>

數(shù)組類(lèi)型

在沒(méi)有使用 script setup 的組件中,prop 可以使用 props 選項(xiàng)來(lái)聲明:

export default {
  props: ['foo'],
  setup(props) {
    // setup() 接收 props 作為第一個(gè)參數(shù)
    console.log(props.foo)
  }
}

例子,對(duì)象語(yǔ)法的使用

App.vue里面使用組件,屬性整數(shù)props所定義的

<template>
	<show-info name="kk" age="18" height="1.7"  />
</template>

showInfo.vue子組件

 export default {
        props:{
            name :{
                type:String,
                default:"我是默認(rèn)值name"
            },
            height:{
                type:Number,
                default:2
            }
        }
    }

另外:

那么type的類(lèi)型都可以是哪些呢?

  • String
  • Number
  • Boolean
  • Array
  • Object
  • Date
  • Function
  • Symbol

對(duì)象類(lèi)型

用對(duì)象的形式聲明props(這個(gè)還挺常用的)

使用 script setup

defineProps({
  title: String,
  likes: Number
})

script setup

export default {
  props: {
    title: String,
    likes: Number
  }
}

子組件傳遞給父組件

子組件傳遞給父組件通過(guò)$emit觸發(fā)事件

子組件傳遞內(nèi)容到父組件:

  • 當(dāng)子組件有一些事件發(fā)生的時(shí)候,比如在組件中發(fā)生了點(diǎn)擊,父組件需要切換內(nèi)容;
  • 子組件有一些內(nèi)容想要傳遞給父組件的時(shí)候;

$emit(“add”, count)

第一個(gè)參數(shù)自定義的事件名稱(chēng),第二個(gè)參數(shù)是傳遞的參數(shù)

舉一個(gè)計(jì)數(shù)器案例

  • 這里我們有兩個(gè)子組件,一個(gè)父組件
  • 子組件中定義好在某些情況下觸發(fā)的事件名稱(chēng)
  • 在父組件中以v-on(語(yǔ)法糖@)的方式傳入要監(jiān)聽(tīng)的事件名稱(chēng),并且綁定到對(duì)應(yīng)的方法中;
  • 最后,在子組件中發(fā)生某個(gè)事件的時(shí)候,根據(jù)事件名稱(chēng)觸發(fā)對(duì)應(yīng)的事件

父組件App.vue

  • 父組件監(jiān)聽(tīng)子組件加或減的事件,通過(guò)子組件發(fā)生事件給父組件監(jiān)聽(tīng)
  • 父組件監(jiān)聽(tīng)子組件發(fā)出的自定義事件,然后執(zhí)行相應(yīng)的操作
<template>
    <div class="app">
    <h2>當(dāng)前計(jì)數(shù):{{counter}}</h2>
    <!-- 1.自定義add-counter 并且監(jiān)聽(tīng)內(nèi)部的add事件 -->
   <add-counter @add="addBtnClick"></add-counter>  
   <!-- 2.自定義su-counter組件,監(jiān)聽(tīng)內(nèi)部的sub事件 -->
   <sub-counter @sub="subBtnClick"></sub-counter>
   </div>
</template>
<script>
import AddCounter from './AddCounter.vue'
import SubCounter from './SubCounter.vue'
    export default {
  components: { 
    AddCounter,
    SubCounter
 },
    data() {
        return {
            counter:0
        }
    },
    methods:{
        addBtnClick(count) {
            this.counter += count
        },
        subBtnClick(count) {
            this.counter -= count
        }
    }
}
</script>

子組件1AddCounter.vue

這里定義的是計(jì)數(shù)器的加操作 子組件事件觸發(fā)之后,通過(guò)this.$emit的方式進(jìn)行發(fā)出事件

<template>
    <div class="add">
        <button @click="btnClick(1)">+1</button>
        <button @click="btnClick(5)">+5</button>
        <button @click="btnClick(10)">+10</button>
    </div>
</template>
<script>
    export default {
        methods:{
            btnClick(count) {
                // 讓子組件發(fā)出去一個(gè)自定義事件
                // 第一個(gè)參數(shù)自定義的事件名稱(chēng),第二個(gè)參數(shù)是傳遞的參數(shù)
                this.$emit("add",count)
            }
        }
    }
</script>

3. 子組件2SubCounter.vue

這里定義的是計(jì)數(shù)器的減操作

子組件事件觸發(fā)之后,通過(guò)this.$emit的方式進(jìn)行發(fā)出事件

<template>
    <div class="sub">
        <button @click="btnClick(1)">-1</button>
        <button @click="btnClick(5)">-5</button>
        <button @click="btnClick(10)">-10</button>
    </div>
</template>
<script>
    export default {
        // 1.emits數(shù)組語(yǔ)法
       emits:["addd"],
       methods:{
        btnClick(count) {
            this.$emit("sub",count)
        }
       }
    }
</script>

這個(gè)案例非常經(jīng)典,可以反復(fù)琢磨一下~

到此這篇關(guān)于Vue組件通信之父?jìng)髯优c子傳父詳細(xì)講解的文章就介紹到這了,更多相關(guān)Vue組件通信內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 使用 Vue.js 仿百度搜索框的實(shí)例代碼

    使用 Vue.js 仿百度搜索框的實(shí)例代碼

    本篇文章主要介紹了使用 Vue.js 仿百度搜索框的實(shí)例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-05-05
  • vue中使用v-if,v-else來(lái)設(shè)置css樣式的步驟

    vue中使用v-if,v-else來(lái)設(shè)置css樣式的步驟

    我們?cè)谑褂胿ue項(xiàng)目開(kāi)發(fā)時(shí),v-if是使用的非常多的,在這里我們談?wù)勅绾问褂胿-i來(lái)綁定修改css樣式,使用的主要是雙向數(shù)據(jù)綁定,即通過(guò)改變他的狀態(tài)來(lái)改變他的樣式,這篇文章主要介紹了vue中如何使用v-if,v-else來(lái)設(shè)置css樣式,需要的朋友可以參考下
    2023-03-03
  • 關(guān)于vue組件的更新機(jī)制?resize()?callResize()

    關(guān)于vue組件的更新機(jī)制?resize()?callResize()

    這篇文章主要介紹了關(guān)于vue組件的更新機(jī)制?resize()?callResize(),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • Vue.js之$emit用法案例詳解

    Vue.js之$emit用法案例詳解

    這篇文章主要介紹了Vue.js之$emit用法案例詳解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-09-09
  • vue3-print-nb實(shí)現(xiàn)頁(yè)面打印(含分頁(yè)打印)示例代碼

    vue3-print-nb實(shí)現(xiàn)頁(yè)面打印(含分頁(yè)打印)示例代碼

    大多數(shù)后臺(tái)系統(tǒng)中都存在打印的需求,在有打印需求時(shí),對(duì)前端來(lái)說(shuō)當(dāng)然是直接打印頁(yè)面更容易,下面這篇文章主要給大家介紹了關(guān)于vue3-print-nb實(shí)現(xiàn)頁(yè)面打印(含分頁(yè)打印)的相關(guān)資料,需要的朋友可以參考下
    2024-01-01
  • Vue中使用this.$set()如何新增數(shù)據(jù),更新視圖

    Vue中使用this.$set()如何新增數(shù)據(jù),更新視圖

    這篇文章主要介紹了Vue中使用this.$set()實(shí)現(xiàn)新增數(shù)據(jù),更新視圖方式。具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • Vue用Export2Excel導(dǎo)出excel,多級(jí)表頭數(shù)據(jù)方式

    Vue用Export2Excel導(dǎo)出excel,多級(jí)表頭數(shù)據(jù)方式

    這篇文章主要介紹了Vue用Export2Excel導(dǎo)出excel,多級(jí)表頭數(shù)據(jù)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • vue組合式API淺顯入門(mén)示例詳解

    vue組合式API淺顯入門(mén)示例詳解

    這篇文章主要為大家介紹了vue組合式API淺顯入門(mén)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • vue-router路由參數(shù)刷新消失的問(wèn)題解決方法

    vue-router路由參數(shù)刷新消失的問(wèn)題解決方法

    本篇文章主要介紹了vue-router路由參數(shù)刷新消失的問(wèn)題解決方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • Vue封裝Swiper實(shí)現(xiàn)圖片輪播效果

    Vue封裝Swiper實(shí)現(xiàn)圖片輪播效果

    圖片輪播是前端中經(jīng)常需要實(shí)現(xiàn)的一個(gè)功能。最近學(xué)習(xí)Vue.js,就針對(duì)Swiper進(jìn)行封裝,實(shí)現(xiàn)一個(gè)簡(jiǎn)單的圖片輪播組件。感興趣的朋友跟隨腳本之家小編一起學(xué)習(xí)吧
    2018-02-02

最新評(píng)論

小金县| 清涧县| 习水县| 云安县| 贡嘎县| 读书| 寿光市| 临沂市| 临猗县| 巨野县| 大厂| 札达县| 榆中县| 如皋市| 都昌县| 高雄市| 醴陵市| 常德市| 常宁市| 高青县| 涿鹿县| 河津市| 石泉县| 聂拉木县| 白玉县| 开鲁县| 仁怀市| 神池县| 利津县| 高台县| 十堰市| 康平县| 竹北市| 磐石市| 张家口市| 巴中市| 安化县| 龙川县| 滦南县| 祁连县| 阳江市|