导航

v-bind="obj" 相当于 :a="obj.a"、:b="obj.b"父组件
<template>
<div>
<sub-comp
v-bind="obj"
></sub-comp>
</div>
</template>
<script>
export default {
data() {
obj: {
a: 1,
b: 2
}
}
}
</script>
子组件
<template>
<div>{{ a }} {{ obj.a }}</div>
</template>
<script>
export default {
props: ['obj', 'a', 'b']
}
</script>
子组件两种方式都能访问



但加上 required 就可以验证了:
props: {
age: {
required: true,
type: Number
}
},
<main-login
:age="undefined"
></main-login>

props: {
age: [ Number, String ]
},
props: {
age: {
required: true,
type: [ Number, String ]
}
},
props: {
a: {
required: true,
type: Number,
default: 0
},
b: {
required: true,
type: Number,
default: 0
}
},
props: {
article: {
type: Object,
default() {
return {
title: '',
content: ''
}
}
}
}
props: {
btnType: {
required: true,
validator(value) {
return [
'primary',
'success',
'warning',
'danger'
].includes(value);
}
}
}
props: {
age: {
required: true,
type: Number,
default() {
console.log(this.tabData);
}
},
}

validator.js
export const MyDemo = {
age: {
required: true,
type: Number,
default() {
console.log(this.tabData);
}
},
btnType: {
required: true,
validator(value) {
return [
'primary',
'success',
'warning',
'danger'
].includes(value);
}
}
}
comp.vue
import { MyDemo } from './validator';
export default {
props: MyDemo
}