Vue组件

Prop属性

prop定义了这个组件有哪些可配置的属性,组件的核心功能也都是它来确定的。写通用组件时,props 最好用对象的写法,这样可以针对每个属性设置类型、默认值或自定义校验属性的值,这点在组件开发中很重要,然而很多人却忽视,直接使用 props 的数组用法,这样的组件往往是不严谨的。比如我们封装一个按钮组件





引入组件:

components: {
    iButton
  }

使用组件:



组件中定义了两个属性:尺寸 size 和 是否禁用 disabled。其中 size 使用 validator 进行了值的自定义验证,也就是说,从父级传入的 size,它的值必须是指定的 small、large、default 中的一个,默认值是 default,如果传入这三个以外的值,都会抛出一条警告。

要注意的是,组件里定义的 props,都是单向数据流,也就是只能通过父级修改,组件自己不能修改 props 的值,只能修改定义在 data 里的数据,非要修改,也是通过后面介绍的自定义事件通知父级,由父级来修改。

在使用组件时,也可以传入一些标准的 html 特性,比如 id、class:


这样的 html 特性,在组件内的

这里的 节点就是指定的一个插槽的位置,这样在组件内部就可以扩展内容了:

按钮一 按钮二

当需要多个插槽时,会用到具名 slot,比如上面的组件我们再增加一个 slot,用于设置另一个图标组件:



  
  按钮 1

这样,父级内定义的内容,就会出现在组件对应的 slot 里,没有写名字的,就是默认的 slot。

自定义事件 event

现在我们给组件 加一个点击事件,目前有两种写法,我们先看自定义事件 event(部分代码省略):

//子组件
template>
  


通过 $emit,就可以触发自定义的事件 on-click ,在父级通过 @on-click 来监听:

    按钮一


上面的 click 事件,是在组件内部的

你可能感兴趣的:(Vue组件)