Prop的基本用法很简单,只须要在子组件的Vue实例中定义该属性并把值设为目标属性的数组便可数组
Vue.component('child', { ... // 接收message props: ['message'] ... })
/* 父组件 */ <child type="video"></child> /* 子组件 */ Vue.component('child', { ... // 成功接收 props: ['type'] ... })
全部的 prop 都使得其父子 prop 之间造成了一个单向下行绑定:父组件的 Prop 的更新会向下流动到子组件中,可是反过来则不行。
这样会防止从子组件意外改变父组件以及同级子组件的状态,从而致使你的应用的数据流向难以理解。ide
<div> <p>{{newMessage}}</p> </div> ... props: ['message'], computed:{ newMessage(){ return this.message; } } ...
<div id="root"> <div content="hello"></div> </div>
props: [data1, data2]
数组形式至关于直接接收消息,不作任何校验,通常来讲,不太建议使用数组形式。函数
2.简单对象形式post
props: { data1: String, data2: Array}
简单对象形式对父组件传递的值进行了类型校验,若是传过来的值类型不一致,控制台会报错。ui
3.复杂对象形式this
props: { data1: { type: String, //设定类型 required: true, //是否必须 default: 'default value', //默认值 validator (value) { return (value.length < 5) } }, //校验规则 data2: { type: Array, required: true, default: () => ['', '', ''] }}
【!】 注意那些 prop 会在一个组件实例建立以前进行验证,因此实例的属性 (如 data、computed 等) 在 default 或 validator 函数中是不可用的。code
type 能够是下列原生构造函数中的一个:component
String Number Boolean Array Object Date Function Symbol
额外的,type 还能够是一个自定义的构造函数,而且经过 instanceof 来进行检查确认。对象
例如,给定下列现成的构造函数:blog
function Person (firstName, lastName) { this.firstName = firstName this.lastName = lastName }
Vue.component('blog-post', { props: { author: Person } })