一,props 作用
1.props 用于父子组件的通信。
2.props 具有单向下行绑定,由父组件传递给子组件。且子组件不能修改props 。
二,子组件props 声明
1.props 是配置对象的一个配置项,可接受数组和对象。
(1)数组:['title','content'] 声明该组件接受父组件传递的props 。 (2)对象:{title:'Number'} 使用对象形式可以对props 进行校验。
2.几种校验方式 (1)类型校验:title:'Boolean' , title:['String','Number'] (2)必填校验:title:{type:'String',required:true} (3)设置默认值:title:{default:'hello world'} title:{type:'Object',default:function(){return { a:1}}} (对象或数组默认值必须从一个工厂函数获取) (4)自定义验证函数:title:{validator:function(value){return value=='hello world'}} 函数返回布尔值,为true 验证通过
3.子组件不能修改props ,若需要修改props 的值,可以把props 作为初始值赋值给组件自己的data
三,父组件传递props
1.子组件使用驼峰命名的props ,父组件传递给子组件时需要使用- 分割 : dogName -> dog-name 。
2.当传递的是个静态表达式或者动态props 时,需要使用v-bind 指令。
3.为了方便书写,当子组件接受的props 较多,可以使用一个对象全部传入,此时直接使用v-bind='objName' 即可。 (类似于react 的{...props} )
四,非props 的属性
1.非props 的属性是指父组件传递给子组件,而子组件并未声明相应的props 的属性
2.默认情况下,非props 的属性会被直接加在子组件的根节点上。
3.例如在子组件上定义style ,class ,或者事件会被直接加在根元素上。
4.inheritAttrs 是配置对象的一个属性,我们可以在子组件使用inheritAttrs:false 来禁用这种默认行为
|