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...