如何将组件所有的props传递给子组件
$props:包含当前组件所有已声明的props属性
js
// 父组件往下传 v-bind="$props"
<A :value="testValue" v-bind="$props"></A>
// ...
props: {
parentProps1: {
type: String,
required: false,
default: 'parentProps1'
},
parentProps2: {
type: String,
required: false,
default: 'parentProps2'
},
parentProps3: {
type: String,
required: false,
default: 'parentProps3'
},
}
// $props: {parentProps1: "parentProps1", parentProps2: "parentProps2",parentProps3: "parentProps3"}
// 使用Object.getOwnPropertyDescriptors($props),发现该对象的所有属性不可写的。writable: false
子组件中也必须使用props选项来接收
js
// 子组件 A
props: {
value: '',
parentProps1: '',
parentProps2: '',
parentProps3: ''
}
// $props: {value: "testValue", parentProps1: "parentProps1", parentProps2: "parentProps2",parentProps3: "parentProps3"}
另类传递所有参数的思考
- vue初始化state的顺序是:inject、props、methods、data、computer、watch、provide, 所以可以在provide中把$props传递给后代组件