成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

vue傳值和事件方式

Tychio / 2424人閱讀

摘要:袓組件我是祖組件要給孫組件準(zhǔn)備的兒組件孫組件二的事件方式子向父傳遞兄弟之間組件我是兄長,弟弟收好了組件兄長,弟弟收到了。

一、vue的傳值方式
1、父向子傳遞

屬性Props

//child
porops:{msg:String}
//parent
2、子向你傳遞

引用refs

//child
data(){
    return {
        hw:"我是子類父類可以調(diào)用"
    }
}

//parent

this.$refs.hw
3.provideinject實(shí)現(xiàn)袓孫傳值
provide:就相當(dāng)于加強(qiáng)版父組件prop

inject:就相當(dāng)于加強(qiáng)版子組件的props

只要在上一層級(jí)的聲明的provide,那么下一層級(jí)無論多深都能夠通過inject來訪問到provide的數(shù)據(jù)

提示:provide inject 綁定并不是可響應(yīng)的。這是刻意為之的。然而,如果你傳入了一個(gè)可監(jiān)聽的對象,那么其對象的屬性還是可響應(yīng)的。

如果需要傳可響應(yīng)的值,請使用引用類型的數(shù)值,比如{}||[]等。

袓組件


兒組件


孫組件


二、vue的事件方式
1、子向父傳遞
//child
this.$emit("add",good)
//parent
2、兄弟之間

A組件



B組件




父組件

3、袓孫之間(隔輩之間)傳遞
1.使用$attrs$listeners實(shí)現(xiàn)袓孫組件之間數(shù)據(jù)傳遞
本質(zhì)探索
$attrs:包含了父作用域不作為prop被識(shí)別(且獲取)的特性綁定(class和style除外),就是說,他獲取到的除了prop里的可以收到和元素自有屬性之外的所有自定義屬性

$listeners:包含了父作用域中的 (不含 .native 修飾器的) v-on 事件監(jiān)聽器。它可以通過 v-on="$listeners" 傳入內(nèi)部組件——在創(chuàng)建更高層次的組件時(shí)非常有用。

孫組件


兒組件


袓組件


總結(jié):可以用于傳值和事件從后代組件
2.使用dispatch函數(shù)實(shí)現(xiàn)后代向祖先傳值
//main.js里
Vue.prototye.dispatch = dispatch;
/**
eventName 派發(fā)事件名稱
data 派發(fā)的數(shù)據(jù)
**/
function dispatch(eventName,data){
    let parent = this.$parent
    while(parent){
        parent.$emit(eventName,data)
        parent =  parent.$parent;
    }
}

后代組件


祖組件


3.使用事件總線

main.js

class Bus{
    constructor(){
        this.callbacks = {}
    }
    $on(name,fn){
        this.callbacks[name] =  this.callbacks[name] || []
        this.callbacks[name].push(fn)
    }
    $emit(name,args){
        if(this.callbacks[name]){
            this.callbacks[name].forEach(cb=>cb(args))
        }
    }
}
Vue.prototype.$bus = new Bus()

A組件


B組件


最后一種使用Vuex,但vuex比較大,后續(xù)會(huì)跟上,敬請期待

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/106907.html

相關(guān)文章

  • 簡單說說vue的父子組件,父子組件值和vuex

    摘要:我們需要在里改動(dòng)一下代碼首先就是綁定一個(gè)自定義事件再增加然后在中變成就是觸發(fā)父組件中的方法所以,觸發(fā)了父組件的函數(shù),改變了父組件的的值,父組件再通過傳值給子組件。從而實(shí)現(xiàn)數(shù)據(jù)傳遞,父子組件通信。 一、vue的父子組件之間是如何傳值的? 首先呢,需要說說的是,vue既然有雙向綁定,那為何會(huì)有父子組件之間的傳值問題?這個(gè)問題也簡單,vue的組件會(huì)供其他的vue頁面進(jìn)行調(diào)用,如果數(shù)組都是雙...

    Tecode 評(píng)論0 收藏0
  • 關(guān)于前端Vue框架的知識(shí)點(diǎn)

    摘要:最近有時(shí)間,整理一下的知識(shí)點(diǎn),很多都是面試常見的的生命周期如果你能理解了這張圖,也就對的生命周期有了一個(gè)大致的了解。創(chuàng)建前后在階段,實(shí)例的掛載元素還沒有。模式下,前端的必須和實(shí)際向后端發(fā)起請求的一致,如。 最近有時(shí)間,整理一下Vue的知識(shí)點(diǎn),很多都是面試常見的 1、Vue的生命周期 如果你能理解了這張圖,也就對Vue的生命周期有了一個(gè)大致的了解。 showImg(https://s...

    PAMPANG 評(píng)論0 收藏0
  • vue -- 非父子組件傳值,事件總線(eventbus)的使用方式

    摘要:我的個(gè)人博客地址資源地址非父子組件傳值,事件總線的使用方式我的博客地址如果您對我的博客內(nèi)容有疑惑或質(zhì)疑的地方,請?jiān)谙路皆u(píng)論區(qū)留言,或郵件給我,共同學(xué)習(xí)進(jìn)步。 歡迎訪問我的個(gè)人博客:http://www.xiaolongwu.cn 前言 先說一下什么是事件總線,其實(shí)就是訂閱發(fā)布者模式; 比如有一個(gè)bus對象,這個(gè)對象上有兩個(gè)方法,一個(gè)是on(監(jiān)聽,也就是訂閱),一個(gè)是emit(觸發(fā),也就...

    zone 評(píng)論0 收藏0
  • Vue 組件子傳父理解篇

    摘要:子傳父想要子傳父,通過子組件控制父組件方法,進(jìn)而讓父組件的方法自己改變自己的明確父組件綁定的上內(nèi)容作用域都屬于父組件的,因此傳值的都是父組件的或者例如下面的案例,首先和中左面都是子組件的接受的變量值,右面都有可能是父組件或者傳值簡單 vue 子傳父 1.想要子傳父,通過子組件控制父組件方法,進(jìn)而讓父組件的方法自己改變自己的data 2.明確父組件綁定的dom上內(nèi)容作用域都屬于父組件的,...

    wudengzan 評(píng)論0 收藏0
  • vue中使用JSX語法

    摘要:發(fā)明了,利用語法來創(chuàng)建虛擬。然而,對持久化實(shí)例的缺乏也意味著函數(shù)式組件不會(huì)出現(xiàn)在的組件樹里。這個(gè)很有用,當(dāng)你在父組件給子組件綁定事件時(shí)就需要這個(gè)了。之前考慮過用動(dòng)態(tài)組件來切換,但是放棄了,因?yàn)闆]有直觀啊。另外推薦大家多用函數(shù)式組件提高性能。 什么是JSX? JSX就是Javascript和XML結(jié)合的一種格式。React發(fā)明了JSX,利用HTML語法來創(chuàng)建虛擬DOM。當(dāng)遇到{ ...

    quietin 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<