Vue中提供了很多屬性來方便我們開發(fā),在組件中,有時(shí)候我們需要設(shè)置一些組件的默認(rèn)屬性。這時(shí),我們可以使用Vue的defaultProps屬性來設(shè)置組件的默認(rèn)屬性。
export default {
name: 'MyComponent',
props: {
message: String,
count: Number,
disabled: Boolean
},
defaultProps: {
message: 'Hello World',
count: 0,
disabled: false
}
}
在這個(gè)例子中,我們定義了一個(gè)MyComponent組件。在props中定義了message、count和disabled三個(gè)屬性,又使用defaultProps屬性來設(shè)置默認(rèn)值。
當(dāng)MyComponent組件沒有傳入message、count和disabled屬性值時(shí),它們將會使用defaultProps中定義的默認(rèn)值。例如:
當(dāng)使用上面的代碼片段來渲染MyComponent組件時(shí),MyComponent組件中的message屬性將會被設(shè)置為'Hello World',count屬性將會被設(shè)置為0,disabled屬性將會被設(shè)置為false。
在使用defaultProps時(shí)需要注意的是,只有當(dāng)組件的props沒有被傳入時(shí)才會使用defaultProps設(shè)置的屬性值。如果傳入了props屬性值,就會覆蓋掉defaultProps中的默認(rèn)值。同時(shí),在Vue2.x版本中,需要使用Vue.util.extend來合并props和defaultProps,例如:
import { extend } from 'vue'
export default {
name: 'MyComponent',
props: {
message: String,
count: Number,
disabled: Boolean
},
defaultProps: {
message: 'Hello World',
count: 0,
disabled: false
},
created() {
extend(this.$props, this.$options.defaultProps)
}
}
在created生命周期函數(shù)中,使用了Vue.util.extend來合并props和defaultProps,以確保一定使用defaultProps中定義的默認(rèn)值。