Skip to content

Dropdown 下拉菜单组件

该组件内部实现以uni-app的基础button组件为基础,进行二次封装

温馨提示

本项目参考了 uView-Plus 开源项目的组件开发方式,基于 Vue 3 和 TypeScript 实现了自定义组件。目前该组件仍处于测试阶段。
感谢 uView-Plus 开源项目及其团队成员的贡献,他们的组件开发思路为本项目提供了宝贵地参考。如果需要了解更多组件开发细节,可以参考uView-Plus的 dropdown组件 的代码实现。

平台差异说明

APP(vue)H5微信小程序

基本使用示例

  • 该组件必须结合up-dropdown和up-dropdown-item一起使用,展开的内容由up-dropdown-item通过传递参数或者slot提供
  • 组件的菜单栏标题由up-dropdown-item通过title参数提供
  • up-dropdown-item带有默认的单选展示功能,通过options(见下方说明)配置,传入slot则会覆盖默认功能,通过v-model双向绑定options选中项的value值
html
<!-- 全局使用 -->
<hy-dropdown>
    <hy-dropdown-item
            title="全部"
            :menus="options1"
            v-model="value1"
            @change="handleChange"
    ></hy-dropdown-item>
    <hy-dropdown-item
            title="国漫"
            :menus="options_2"
            v-model="value_2"
            @change="handleChange"
    ></hy-dropdown-item>
    <hy-dropdown-item
            title="国家"
            :menus="options_3"
            v-model="value_3"
            @change="handleChange"
    ></hy-dropdown-item>
</hy-dropdown>
<!-- 单个组件引入 -->
<HyButton type="primary">按钮</HyButton>
ts
import HyDropdownItem from "hy-app/components/hy-dropdown-item/hy-dropdown-item.vue";
import HyDropdown from "hy-app/components/hy-dropdown/hy-dropdown.vue";

const options1 = ref([
    {
        label: "全部商品",
        value: 1,
    },
    {
        label: "折扣商品",
        value: 2,
    },
    {
        label: "团购商品",
        value: 3,
    },
]);
const options_2 = ref([
    {
        label: "西行记",
        value: 1,
    },
    {
        label: "斗破苍穹",
        value: 2,
    },
    {
        label: "吞噬星空",
        value: 3,
    },
    {
        label: "斗罗大陆",
        value: 4,
    },
    {
        label: "偷心九月天",
        value: 5,
    },
]);
const options_3 = ref([
    {
        label: "中国",
        value: 1,
    },
    {
        label: "日本",
        value: 2,
    },
    {
        label: "韩国",
        value: 3,
    },
    {
        label: "美国",
        value: 4,
    },
]);

基本使用示例

html
<template>
    <hy-button text="月落"></hy-button>
</template>

API

参数说明类型默认值
active-color标题和选项卡选中的颜色string#3c9cff
inactive-color标题和选项卡未选中的颜色string#606266
close-on-click-mask点击遮罩是否关闭菜单booleantrue
height标题菜单的高度,单位任意,数值默认为px单位string|number40
border-bottom标题菜单是否显示下边框booleanfalse
title-size标题的字体大小,单位任意,数值默认为px单位string|number16
border-radius菜单展开内容下方的圆角值,单位pxstring|number0
menu-icon标题菜单右侧的图标booleanARROW_DOWN_FILL
menu-icon-size标题菜单右侧的图标的大小,单位任意,数值默认为px单位string|number14
参数说明类型默认值
v-model双向绑定选项卡选择值string|number-
title菜单项标题string-
menus选项数据array-
disabled是否显示空状态booleanfalse

Events

事件名说明回调参数
change每个dropdown-item组件均有此回调,点击某个options选项时触发value: - 点击项绑定的value属性值

Slots

插槽名说明接收值
defaultDropdown-item组件插槽内容-
00:46