父组件经过属性的方式对子组件传递内容数据,而子组件经过props的方式对数据进行接收,这时,子组件能够组件中的props传参的规则,设定属性的数据类型:bash
如: 指定content必须为字符串app
<div id="app">
<child content="hello world"></child>
</div>
Vue.component('child', {
props:{
content:String
},
template: '<div>{{content}}</div>',
data() {
return {
message: '这是一个实例数据'
}
}
})
复制代码
如: 指定content能够为字符串或者数字类型dom
Vue.component('child', {
props:{
content:[String,Number]
},
template: '<div>{{content}}</div>',
data() {
return {
message: '这是一个实例数据'
}
}
})
复制代码
props: 接收属性,为一个对象,能够设置参数ui
type:表示所传数据的类型
required:true(表示该属性是必传)
default: 'default' (提醒父组件并无该属性传递)
validator (自定义校验器,表示对传入属性的进行校验)
复制代码
以下:this
Vue.component('child', {
props:{
content:{
type:String, //表示类型必须为 String
required:true, //true 表示属性必传 false表示能够不传属性
default:'默认内容', //提醒父组件并无属性传递
validator:function(res){
return (res.length >5 ) //自定义校验器,表示对传入属性的进行校验长度
}
}
},
template: '<div>{{content}}</div>',
data() {
return {
message: '这是一个实例数据'
}
}
})
复制代码
非props 特性,父组件经过属性向子组件传递数据时,在子组件接收时,并无声明props属性来接收数据spa
<div id="app">
<child content="hello world"></child>
</div>
Vue.component('child', {
template: '<div>{{content}}</div>',
data() {
return {
message: '这是一个实例数据'
}
}
})
复制代码
会出错:父组件中的content未被定义code
其特色以下:component
一、组件未定义props进行接收父组件属性传来的值,那么这个属性(如content)则为非props特性。
二、父组件使用一个非props特性,子组件没有经过props接收属性数据,该属性则会展示在子组件template中的页面模板的dom标签的属性中。
复制代码
props特性,父组件经过属性向子组件传递数据时,在子组件接收时,在props中声明接收了这个属性数据对象
<div id="app">
<child content="hello world"></child>
</div>
Vue.component('child', {
props:['content'],
template: '<div>{{content}}</div>',
data() {
return {
message: '这是一个实例数据'
}
}
})
复制代码
其特色以下:字符串
1. 子组件所带的属性传递是不会出如今dom上
2. 父组件经过属性传值后,子组件就会经过template中的插值表达式或者经过this.content去取得该属性中的内容
复制代码