单向数据流
一种组件化中的数据流向的规范:
- 数据总是从父组件向子组件流动
- 子组件不可以改变父组件流入的数据(属性 props)
设置 props
类型
为 props 设置类型使用对象的方式 {prop : type}
,props 都可以通过 undefined / null
只要是构造的类型都可以为 props 的类型
<script>
export default {
props:{
str: String,
num: Number,
bool: Boolean,
sym: Symbol,
obj: Object,
arr: Array,
fun: Function,
date: Date,
reg: Regexp,
p: Promise,
c: MyClass
}
}
</script>
或者用一个对象来定义 props 的属性,使用 type 属性来定义类型
<script>
export default {
props:{
str: {
type: String
},
num: {
type: Number
},
bool: {
type: Boolean
},
}
}
</script>
默认值
,default 属性为默认值
引用值的默认值是用函数返回一个副本的方式来设置
<script>
export default {
props:{
str: {
type: String,
default: 'abc'
},
num: {
type: Number,
default: 123
},
bool: {
type: Boolean,
default: true
},
obj: {
type: Object,
default() {
return {a:1, b:'2'}
}
},
arr: {
type: Array,
default() {
return [1, 'a', 2, 'b']
}
}
}
}
</script>
必要值
required: true,来设置此值必需传入 props
<script>
export default {
props:{
str: {
type: String,
required: true
},
num: {
type: Number,
default: 123
},
}
}
</script>
验证器
validator 设置一个验证器的 function, return true 通过验证
<script>
export default {
props:{
str: {
type: String,
validator(val){
return ['success', 'warning', 'danger'].indexOf(val) !== -1
}
}
}
}
</script>