button组件开发时用到的频率非常高,一起来看看吧。
button组件相关的有两个文件
button-group(按钮组)
按钮组时使用,相当于button的一个父容器,内包含一个匿名插槽,具体的处理在button.vue中
1 | <template> |
button (按钮)
结构
1 | <button |
- button按钮
- 属性:
- disabled:是否禁用
- autofocus:是否获取焦点
- type:赋值button的原生type(props中接收的nativeType)
- class: 多条件动态显示(此处用数组嵌套对象的写法 点击跳转官方文档)
- 属性:
- loading:props接收的loading为真时显示。
- icon:props接收的icon为真并且loading为假时显示。
- 插槽:接收到匿名插槽内容时显示。(也就是使用button-group按钮组时)
inject: 接收form组件注入的属性
1 | inject: { |
这里接收默认为空
如果button组件在form组件内使用,若form向子孙后代注入某些属性。会影响button的一些样式(本组件computed 中可以看到)。
那么问题来了,有props为什么还要用 provide 和 inject 呢,因为前者只能用于父子,后者可以子孙后代,层级更深
computed
1 | computed: { |
size的影响因素
props接收的size
form组件provide 的size
全局配置对象$ELEMENT的size: vue.use()时传入的
1
2
3import Vue from 'vue';
import Element from 'element-ui';
Vue.use(Element, { size: 'small', zIndex: 3000 });
disabled的影响因素
props接收的disabled
form组件provide 的disabled
事件methods
1 | methods: { |
props
可以结合element文档看
1 | props: { |
学习
- slot的使用:插槽
- 动态class class绑定传送门
- 数组写法
- 对象写法
- 更复杂的情况可以用数组组合对象的写法
- $slots.default : 获取所有匿名插槽分发的内容 $slots官方传送门