import { DropdownMenu } from "@taroify/core"
function BasicDropdownMenu() {
return (
<DropdownMenu>
<DropdownMenu.Item>
<DropdownMenu.Option value={0}>全部商品</DropdownMenu.Option>
<DropdownMenu.Option value={1}>新款商品</DropdownMenu.Option>
<DropdownMenu.Option value={2}>活动商品</DropdownMenu.Option>
</DropdownMenu.Item>
<DropdownMenu.Item>
<DropdownMenu.Option value={0}>默认排序</DropdownMenu.Option>
<DropdownMenu.Option value={1}>好评排序</DropdownMenu.Option>
<DropdownMenu.Option value={2}>销量排序</DropdownMenu.Option>
</DropdownMenu.Item>
</DropdownMenu>
)
}
可以通过 DropdownMenu.Item
组件自定义内容。
import { DropdownMenu } from "@taroify/core"
import { Key } from "react"
function DropdownMenuWithCustomContent() {
const [value, setValue] = useState<Key | false>()
const [option1, setOption1] = useState()
const [switch1, setSwitch1] = useState(true)
const [switch2, setSwitch2] = useState(false)
return (
<DropdownMenu value={value} onChange={setValue}>
<DropdownMenu.Item value={option1} onChange={setOption1}>
<DropdownMenu.Option value={0}>全部商品</DropdownMenu.Option>
<DropdownMenu.Option value={1}>新款商品</DropdownMenu.Option>
<DropdownMenu.Option value={2}>活动商品</DropdownMenu.Option>
</DropdownMenu.Item>
<DropdownMenu.Item title="筛选">
<Cell title="包邮" align="center">
<Switch size="24" checked={switch1} onChange={setSwitch1} />
</Cell>
<Cell title="团购" align="center">
<Switch size="24" checked={switch2} onChange={setSwitch2} />
</Cell>
<View style="padding: 5px 16px;">
<Button color="danger" block shape="round" onClick={() => setValue(false)}>
确认
</Button>
</View>
</DropdownMenu.Item>
</DropdownMenu>
)
}
通过 css
可以自定义菜单标题和选项的选中态颜色。
import { DropdownMenu } from "@taroify/core"
function DropdownMenuWithCustomColor() {
return (
<DropdownMenu className="custom-color">
<DropdownMenu.Item>
<DropdownMenu.Option value={0}>全部商品</DropdownMenu.Option>
<DropdownMenu.Option value={1}>新款商品</DropdownMenu.Option>
<DropdownMenu.Option value={2}>活动商品</DropdownMenu.Option>
</DropdownMenu.Item>
<DropdownMenu.Item>
<DropdownMenu.Option value={0}>默认排序</DropdownMenu.Option>
<DropdownMenu.Option value={1}>好评排序</DropdownMenu.Option>
<DropdownMenu.Option value={2}>销量排序</DropdownMenu.Option>
</DropdownMenu.Item>
</DropdownMenu>
)
}
.custom-color {
--dropdown-menu-title-active-color: #1989fa;
--dropdown-menu-option-active-color: #1989fa;
}
将 direction
属性值设置为 up
,菜单即可向上展开。
import { DropdownMenu } from "@taroify/core"
function UpDropdownMenu() {
return (
<DropdownMenu direction="up">
<DropdownMenu.Item>
<DropdownMenu.Option value={0}>全部商品</DropdownMenu.Option>
<DropdownMenu.Option value={1}>新款商品</DropdownMenu.Option>
<DropdownMenu.Option value={2}>活动商品</DropdownMenu.Option>
</DropdownMenu.Item>
<DropdownMenu.Item>
<DropdownMenu.Option value={0}>默认排序</DropdownMenu.Option>
<DropdownMenu.Option value={1}>好评排序</DropdownMenu.Option>
<DropdownMenu.Option value={2}>销量排序</DropdownMenu.Option>
</DropdownMenu.Item>
</DropdownMenu>
)
}
import { DropdownMenu } from "@taroify/core"
function DisabledDropdownMenu() {
return (
<DropdownMenu>
<DropdownMenu.Item disabled>
<DropdownMenu.Option value={0}>全部商品</DropdownMenu.Option>
<DropdownMenu.Option value={1}>新款商品</DropdownMenu.Option>
<DropdownMenu.Option value={2}>活动商品</DropdownMenu.Option>
</DropdownMenu.Item>
<DropdownMenu.Item disabled>
<DropdownMenu.Option value={0}>默认排序</DropdownMenu.Option>
<DropdownMenu.Option value={1}>好评排序</DropdownMenu.Option>
<DropdownMenu.Option value={2}>销量排序</DropdownMenu.Option>
</DropdownMenu.Item>
</DropdownMenu>
)
}
参数 | 说明 | 类型 | 默认值 |
---|---|---|---|
defaultValue | 默认选中的 DropdownMenu.Item 的 标识 | React.Key | - |
value | 当前选中的 DropdownMenu.Item 的 标识 | React.Key | - |
direction | 菜单展开方向,可选值为up |
string | down |
参数 | 说明 | 类型 | 默认值 |
---|---|---|---|
defaultValue | 默认选中项对应的 value | any | - |
value | 当前选中项对应的 value | any | - |
title | 菜单项标题 | string | 当前选中项文字 |
disabled | 是否禁用菜单 | boolean | false |
键名 | 说明 | 类型 |
---|---|---|
value | 标识符 | any |
icon | 左侧图标或图片 | ReactNode |
title | 展示 DropdownMenu 选中的 title 内容 | ReactNode |
组件提供了下列 CSS 变量,可用于自定义样式,使用方法请参考 ConfigProvider 组件。
名称 | 默认值 | 描述 |
---|---|---|
—dropdown-menu-height | 48px * $hd | - |
—dropdown-menu-background-color | var(—white) | - |
—dropdown-menu-z-index | 11 | - |
—dropdown-menu-box-shadow | 0 2px * $hd 12px * $hd rgba(100, 101, 102, 0.12) | - |
—dropdown-menu-title-font-size | 15px * $hd | - |
—dropdown-menu-title-color | var(—text-color) | - |
—dropdown-menu-title-padding | 0 var(—padding-xs) | - |
—dropdown-menu-title-line-height | var(—line-height-lg) | - |
—dropdown-menu-title-active-opacity | var(—active-opacity) | - |
—dropdown-menu-title-active-color | var(—danger-color) | - |
—dropdown-menu-title-disabled-color | var(—gray-6) | - |
—dropdown-menu-item-z-index | calc(var(—dropdown-menu-z-index) - 1) | - |
—dropdown-menu-item-content-max-height | 80% | - |
—dropdown-menu-item-content-animation-duration | var(—animation-duration-fast) | - |
—dropdown-menu-option-active-color | var(—danger-color) | - |