vue 元件之間通訊和傳值

2021-10-10 12:37:50 字數 2267 閱讀 5658

父元件通過props向子元件傳值,父元件parent.vue:

子元件傳過來的值:}

子元件可以通過$emit繫結方法或者通過$parent訪問和修改父元件的值和方法,子元件child.vue:

父元件傳過來的值:}

通過$emit傳值

通過$parent傳值

這裡引用vue官網文件裡的話

詳細

provideinject主要在開發高階外掛程式/元件庫時使用。並不推薦用於普通應用程式**中。

這對選項需要一起使用,以允許乙個祖先元件向其所有子孫後代注入乙個依賴,不論元件層次有多深,並在其上下游關係成立的時間裡始終生效。如果你熟悉 react,這與 react 的上下文特性很相似。

provide選項應該是乙個物件或返回乙個物件的函式。該物件包含可注入其子孫的 property。在該物件中你可以使用 es2015 symbols 作為 key,但是只在原生支援symbolreflect.ownkeys的環境下可工作。

inject選項應該是:

// 父級元件提供 'foo'

var provider = ,

// ...

}// 子元件注入 'foo'

var child =

// ...

}

利用 es2015 symbols、函式provide和物件inject

const s = symbol()

const provider =

}}const child = ,

// ...

}

接下來 2 個例子只工作在 vue 2.2.1 或更高版本。低於這個版本時,注入的值會在propsdata初始化之後得到。

使用乙個注入的值作為乙個 property 的預設值:

const child = 

}}}

使用乙個注入的值作為資料入口:

const child = 

}}

在 2.5.0+ 的注入可以通過設定預設值使其變成可選項:

const child = 

}}

如果它需要從乙個不同名字的 property 注入,則使用from來表示其源 property:

const child = 

}}

與 prop 的預設值類似,你需要對非原始值使用乙個工廠方法:

const child = 

}}

兩個元件沒有父子關係的情況下,可以通過eventbus來實現兩個元件之間的傳值,比如專案中常用的訊息通知數量變更和觸發訊息的操作之間的元件之間傳值就可以使用eventbus

eventbus可以是乙個vue元件也可以是乙個js檔案,以vue元件為例,eventbus.vue如下:

若使用js檔案,則如下eventbus.js

import vue from 'vue';

export default new vue();

使用eventbus時需在使用的兩個元件中分別引入eventbus

import eventbus from '@/components/eventbus.vue'

// import eventbus from '@/assets/js/eventbus.js'

傳出值的地方可以用eventbus.$emit()去傳值

eventbus.$emit('transfer', transfervlaue)
接收值的地方用eventbus.$on()

eventbus.$on('transfer', (exceptvalue)=>)

Vue 元件之間傳值

一 父元件向子元件傳遞資料 在 vue 中,可以使用 props 向子元件傳遞資料。子元件部分 這是 header.vue 的 html 部分,logo 是在 data 中定義的變數。如果需要從父元件獲取 logo 的值,就需要使用props logo 在 props 中新增了元素之後,就不需要在 ...

vue 元件之間傳值

需求1 假設要把父元件的zhuli傳值到這是使用者的詳細資訊 紅色區域 該如何操作?已知 標籤上可以寫自定義屬性,在使用標籤的時候,告訴子元件使用哪些標籤,子元件中用props定義可以使用的屬性,可以傳多個屬性。在父元件使用的子元件標籤中繫結自定義屬性 name 在子元件中使用props 可以是陣列...

Vue元件之間傳值

父元件向子元件傳值 子元件向父元件傳值 1 子元件用 emit 觸發事件 第乙個引數為 自定義的事件名稱 第二個引數為需要傳遞的資料 擴大父元件中字型大小 擴大父元件中字型大小 兄弟之間的傳遞 傳遞資料方,通過乙個事件觸發hub.emit 方法名,傳遞的資料 接收資料方,通過mounted 鉤子中 ...