Vue元件之間通訊

2022-08-11 08:27:14 字數 2611 閱讀 9115

vue元件傳值有以下幾種情況: 父元件向子元件傳值、子元件向父元件傳值、兄弟元件之間傳值等

一、父元件向子元件傳值:

傳值方式: props

//

動態傳遞值

//子元件son

//靜態傳值

//父元件//

子元件 -- son

1:prop的大小寫: html中的attribute名對大小寫不敏感,所以prop中的駝峰值需要等價於短橫線命名;如果使用字元模板,就沒有這個問題了

//

在html中

//在props與之對應的為駝峰命名

props: ['mydata']

2:prop的型別:

//

官方給的例子

props: ['title', 'likes', 'ispublished', 'commentids', 'author']

//但是,通常希望每個prop都有指定的型別,這時,可以使用物件形式列出prop,這些property的名稱和值分別是prop各自的名稱和型別;

props:

3: 單項資料流

所有的prop都使得其父子之間形成乙個單行向下行繫結:父元件的更新會向下流動到子元件中,但是反過來不行;當父元件更新時,子元件中所有的props都是最新值,所以不應該在子元件中更新props;

兩種常見的試圖更改乙個prop的情形:

#這個prop用來傳遞乙個初始值;這個子元件接下來希望將其作為乙個本地的prop資料來使用:這種情況下,最好定義乙個本地data property並將這個prop用做其初始值; 

props: ['data'],

data()

}

#這個prop以一種原始的值傳入且需要進行轉換:在這種情況下,最好使用這個prop的值來定義乙個計算屬性:

props:['size'],

//計算屬性

computed:

}

注意:js中物件和陣列是通過應用傳入的,所以對於乙個陣列或者物件型別的prop來說,在子元件中改變變更這個物件或陣列本身將會影響到父元件的值

二、子元件向父元件傳值:

通過自定義事件傳值;

//

通過 this.$emit()自定義事件觸發

//*****= 子元件

點選向父元件傳值

//*****= 父元件

//事件名需要完全匹配才可以

三、兄弟之間元件傳值:

通過eventbus或者vuex進行傳值;

vue沒有直接子傳子的方法,如果一定需要兄弟之間傳參,可以先傳到父元件,再傳到子元件。  

//

通過eventbus(即通過on監聽,emit觸發的方式)

定義乙個新的vue例項,專門用於傳遞資料,並匯出

import vue from 'vue'export

default

newvue()

//定義傳遞的方法名和傳輸內容,點選事件或鉤子函式eventbus.emit事件

點選傳遞資料給兄弟元件b

//componentb

}

# 大專案時使用vuex進行資料傳遞:詳情:

四、1:通過路由帶引數進行傳值

a元件傳值寫法:this.$router.push( }) // 跳轉到b

b元件取值寫法: this.$route.query.id

注意:1:vue路由導航有兩種方法:宣告式導航和程式設計式導航 router.push(...)

2:頁面跳轉有push和replace兩種方式

#this.$touter.go(n) 相對於當前頁面向前或者向後跳轉多少個頁面,類似於window.history.go(n)

3:傳參的方式又分為查詢引數query(+path) 和命名路由params(+name)兩種方式:

#命名路由搭配params,重新整理頁面會引數丟失;

#查詢引數搭配query,重新整理頁面資料不會丟失;

接收引數使用this.$router後面就是搭配路由的名稱就能獲得取到的引數

2:通過設定session stroage快取的形式進行傳遞

兩個元件a和b,在元件中設定快取orderdata

const orderdata =

sessionstorage.setitem('快取名稱', json.stringify(orderdata))

b元件就可以獲取在a中設定的快取了

const datab = json.parse(sessionstorage.getitem(『快取名稱』))

五、.sync修飾符

在有些情況下,我們可能需要對乙個prop進行雙向資料繫結,推薦使用update:mypropname的模式進行觸發事件取而代之。

//

舉個例子

在乙個包含title prop的假設的元件中,我們可以用以下方法表達對其賦值的意圖

this.$emit('update:title', newtitle)

//為了方便起見,我們為這中模式提供乙個縮寫,即.sync修飾符

官方文件:

vue元件之間通訊

個人blog,歡迎關注加收藏 元件之間通訊的幾種方式 1.父向子傳資料 props 2.子向父傳資料 emit 3.兄弟元件傳資料 a.事件匯流排 bus 在父元件的data中bus new vue 建立 事件匯流排 b.傳遞資料 this.roo t.bu s.root.bus.root.b us...

vue元件之間的通訊

區域性元件 區域性元件必須手動掛載,不然無法生效。全劇元件 全域性元件不需要手動掛載,但不常用,盡量不要在全域性上掛載變數或者元件 影響瀏覽器效能 配合模板實現元件之間的巢狀。元件是vue.js最強大的功能之一,核心目標是擴充套件htnl元素,封裝可重用 元件可按照template,style,sc...

vue元件之間的通訊

作為乙個vue初學者不得不了解的就是元件間的資料通訊 暫且不談vuex 通訊方式根據元件之間的關係有不同之處。元件關係有下面三種 父 子 子 父 非父子 父 子 父向子傳遞資料通過props 父元件 子元件 子 父 子元件向父元件傳遞分為兩種型別。1 子元件改變父元件傳遞的props 你會發現通過p...