類型:Vue instance
詳細(xì):
指定已創(chuàng)建的實例之父實例,在兩者之間建立父子關(guān)系。子實例可以用?this.$parent?訪問父實例,子實例被推入父實例的?$children?數(shù)組中。
節(jié)制地使用?$parent?和?$children?- 它們的主要目的是作為訪問組件的應(yīng)急方法。更推薦用 props 和 events 實現(xiàn)父子組件通信
類型:Array<Object>
詳細(xì):
mixins?選項接收一個混入對象的數(shù)組耗跛。這些混入對象可以像正常的實例對象一樣包含實例選項,這些選項將會被合并到最終的選項中攒发,使用的是和?Vue.extend()?一樣的選項合并邏輯调塌。也就是說,如果你的混入包含一個 created 鉤子惠猿,而創(chuàng)建組件本身也有一個羔砾,那么兩個函數(shù)都會被調(diào)用。
Mixin 鉤子按照傳入順序依次調(diào)用,并在調(diào)用組件自身的鉤子之前被調(diào)用姜凄。
示例:
varmixin = {created:function(){console.log(1) }}varvm =newVue({created:function(){console.log(2) },mixins: [mixin]})// => 1// => 2
參考:混入
類型:Object | Function
詳細(xì):
允許聲明擴展另一個組件(可以是一個簡單的選項對象或構(gòu)造函數(shù))政溃,而無需使用?Vue.extend。這主要是為了便于擴展單文件組件态秧。
這和?mixins?類似董虱。
示例:
varCompA = { ... }// 在沒有調(diào)用 `Vue.extend` 時候繼承 CompAvarCompB = {extends: CompA,? ...}
2.2.0 新增
類型:
provide:Object | () => Object
inject:Array<string> | { [key: string]: string | Symbol | Object }
詳細(xì):
provide?和?inject?主要在開發(fā)高階插件/組件庫時使用。并不推薦用于普通應(yīng)用程序代碼中申鱼。
這對選項需要一起使用愤诱,以允許一個祖先組件向其所有子孫后代注入一個依賴,不論組件層次有多深捐友,并在起上下游關(guān)系成立的時間里始終生效淫半。如果你熟悉 React,這與 React 的上下文特性很相似匣砖。
provide?選項應(yīng)該是一個對象或返回一個對象的函數(shù)科吭。該對象包含可注入其子孫的屬性。在該對象中你可以使用 ES2015 Symbols 作為 key猴鲫,但是只在原生支持?Symbol?和?Reflect.ownKeys的環(huán)境下可工作对人。
inject?選項應(yīng)該是:
一個字符串?dāng)?shù)組,或
一個對象变隔,對象的 key 是本地的綁定名规伐,value 是:
在可用的注入內(nèi)容中搜索用的 key (字符串或 Symbol)蟹倾,或
一個對象匣缘,該對象的:
from?屬性是在可用的注入內(nèi)容中搜索用的 key (字符串或 Symbol)
default?屬性是降級情況下使用的 value
提示:provide?和?inject?綁定并不是可響應(yīng)的。這是刻意為之的鲜棠。然而肌厨,如果你傳入了一個可監(jiān)聽的對象,那么其對象的屬性還是可響應(yīng)的豁陆。
示例:
// 父級組件提供 'foo'varProvider = {provide: {foo:'bar'},// ...}// 子組件注入 'foo'varChild = {inject: ['foo'],? created () {console.log(this.foo)// => "bar"}// ...}
利用 ES2015 Symbols柑爸、函數(shù)?provide?和對象?inject:
consts =Symbol()constProvider = {? provide () {return{? ? ? [s]:'foo'}? }}constChild = {inject: { s },// ...}
接下來 2 個例子只工作在 Vue 2.2.1 或更高版本。低于這個版本時盒音,注入的值會在?props?和?data?初始化之后得到表鳍。
使用一個注入的值作為一個屬性的默認(rèn)值:
constChild = {inject: ['foo'],props: {bar: {default() {returnthis.foo? ? ? }? ? }? }}
使用一個注入的值作為數(shù)據(jù)入口:
constChild = {inject: ['foo'],? data () {return{bar:this.foo? ? }? }}
在 2.5.0+ 的注入可以通過設(shè)置默認(rèn)值使其變成可選項:
constChild = {inject: {foo: {default:'foo'}? }}
如果它需要從一個不同名字的屬性注入,則使用?from?來表示其源屬性:
constChild = {inject: {foo: {from:'bar',default:'foo'}? }}
與 prop 的默認(rèn)值類似祥诽,你需要對非原始值使用一個工廠方法:
constChild = {inject: {foo: {from:'bar',default:()=>[1,2,3]? ? }? }}