需求分析
折叠面板组件,一般来说由两部分组成,它们分别是Collapse
和CollapseItem
。现在我们来想一想,它们可能会有哪些属性和方法。
Collapse
属性:
- model-value / v-model:当前活动面板,在手风琴模式下是 string 类型,在其他模式下是 array,默认值是一个空数组。
- accordion:是否手风琴模式,是一个 boolean 类型。
事件:
- change:切换当前活动面板,参数在手风琴模式下是 string,在其他模式下是 array
- update:modelValue:实现 v-model 要用到
插槽:
- default:默认插槽,自定义默认内容
CollapseItem
属性:
- name:唯一标识符,类型是 string 或者 number
- title:面板的标题,类型是 string
- disabled:是否禁用,类型是 boolean
事件:
无
插槽:
- title:具名插槽,CollapseItem 的标题
- default: 默认插槽,CollapseItem 的内容
代码实现
定义类型文件
书写 Collapse 组件骨架和交互
书写 CollapseItem 组件骨架和交互
添加动画使切换更加平滑
1 | <Transition name="slide" v-on="transitionEvents"> |
引用组件并使用
1 | <script setup lang="ts"> |