vuecli-vue自定义组件上的属性---选项 / 数据props,自定义属性props支持的类型有4种
组件就是一个标签,标签上有n多个属性。
你自定义的标签,组件,它身上是没有任何属性的。
先有组件,再使用组件,然后在组件身上,定义 各个属性
自定义组件上的属性是自定义的
(子组件 通过添加props属性,自定义自己身上要用的属性)
props中属性名,可以自定义
标签上,有什么属性,全在props上申明对应的属性,
props作用:用于接收父组件的传值!
当该组件作为标签使用时,该标签的属性在此props定义。
自定义属性props支持的类型有4种:type类型、default默认值、required必填项、validator:自定义校验函数
(通过prop属性,父组件可以向子组件传递数据,而子组件的自定义事件就是用来将内部的数据报告给父组件的!)
一、先有组件,再使用组件
1、在views目录下,创建 自定义组件Button.vue
2、在App.vue组件中,引入Button.vue组件,使用它。
二、然后在组件身上,定义 各个属性
props 可以是数组或对象,用于接收来自父组件的数据。props 可以是简单的数组,或者使用对象作为替代,对象允许配置高级选项,如类型检测、自定义验证和设置默认值。
props类型
(1)以字符串数组形式列出的 prop,演示效果,如下所示:
props: ['w', 'h', 't', 'bac', 'tc','show'],
父组件,使用Button.vue组件
预览效果如下所示:
但是,通常如果你 希望 给 每个 prop 都有指定的值类型。这时,你可以 以对象形式列出 prop,这些 property 的名称和值分别是 prop 各自的名称和类型:
props的用法和data的用法一样的
data中的值获取方式
this.xxx
props中值获取方式
this.xxx
<template> <button :style="style">{{title}}</button> </template> <script> export default { props:{ width:Number, height:String, title:String, background:String, textColor:String, show:Boolean }, data() { return { style:{ width:this.width, height:this.height, title:this.title, backgroundColor:this.background, color:this.textColor } }; } }; </script>
在父组件App.vue组件上使用Button.vue组件,并且在这个自定义组件身上添加n多个属性
<template> <div> <my-button width="200px" height="80px" title="提示" background="#37f" text-color="#fff" show ></my-button> </div> </template> <script> import Button from '@/views/Button.vue' export default { components:{ 'my-button':Button } }; </script> <style lang="" scoped> </style>
父组件 传递过来的值,给子组件 去使用!!!
注意:
在父组件中,使用这个属性的时候,他里面的值,可以是字符串。字符串按照以下2种写法,都可以。
width=“200px”
变成
:w="'200px'",这样写可以!!
还有一种,写法:
(2)以对象形式列出的 prop,例如:
自定义属性props支持的类型有一下4种:
props允许是对象,对象允许配置高级选项,如类型检测、自定义验证和设置默认值。
(1) type类型:(自定义属性的数据类型可以是8种,注意:这8种要能说出来!)
type:String/Number/Boolean/Object/
function/Array/Symbol/Date
https://cn.vuejs.org/v2/guide/components-props.html#%E7%B1%BB%E5%9E%8B%E6%A3%80%E6%9F%A5
(2) default默认值--any (自定义属性的默认值,可以是任意类型)
default:any
(3) required是否为必填项(这个值是否必须)(自定属性是否是必填项)
required:Boolean
(4) validator:Function 自定义校验函数 (对这个自定义属性进行校验)
当前props上的值,作为它的一个返回值
validator:Function(val){
,会将该prop值作为唯一参数代入
你一共可以取哪些值
includes(val) 传入的值
}
例如下面:
自定义属性,自己的类型是什么?
自己是否是必填项?
自己是否需要进行数据校验?
每个属性,各自设置各自的类型即可!!
重点分析:自定义校验函数的作用:
validator:function(val){ }
var
必须在取值范围内的 值,才不会报错!!!
自定义校验的功能是:
定义2个颜色用,includes()判断, 外面传过来的值,是否是 数组中的 已经有的内容。
如果数组中有 这个值,就用这个指定的值。控制台,不会报错。
如果数组中没有 这个值,你用了这个值。显示的时候,这个值,可以显示出来,但是控制台,会报错。
演示效果如下所示:
如果数组中有 这个值,就用这个指定的值。控制台,不会报错。
如果数组中没有 这个值,你用了这个值。显示的时候,这个值,可以显示出来,但是控制台,会报错。
还没有留言,还不快点抢沙发?