• Vant React

ActionSheet 动作面板

介绍

底部弹起的模态面板,包含与当前情境相关的多个选项。

引入

import { ActionSheet } from "@taroify/core"

代码演示

基础用法

function BasicActionSheet() {
  const [open, setOpen] = useState(false)
  const actions = useMemo(() => [
    { name: "选项一", value: "1" },
    { name: "选项二", value: "2" },
    { name: "选项三", value: "3" },
  ], [])
  return (
    <>
      <Cell clickable isLink title="基础用法"  onClick={() => setOpen(true)} />
      <ActionSheet actions={actions} open={open} onSelect={() => setOpen(false)} onClose={setOpen} />
    </>
  )
}

展示取消按钮

添加cancelText后,会在底部展示取消按钮,点击后关闭当前面板并触发 onCancel 事件。

function ActionSheetWithCancel() {
  const [open, setOpen] = useState(false)
  const actions = useMemo(() => [
    { name: "选项一", value: "1" },
    { name: "选项二", value: "2" },
    { name: "选项三", value: "3" },
  ], [])
  return (
    <>
      <Cell
        clickable
        isLink
        title="展示取消按钮"
        onClick={() => setOpen(true)}
      />
      <ActionSheet
        cancelText="取消"
        actions={actions}
        open={open}
        onSelect={() => setOpen(false)}
        onCancel={() => setOpen(false)}
        onClose={setOpen}
      />
    </>
  )
}

展示描述信息

通过 descriptionsubname 添加描述信息

function ActionSheetWithDescription() {
  const [open, setOpen] = useState(false)
  const actions = useMemo(() => [
    { name: "选项一", value: "1", subname: "这是一段描述信息" },
    { name: "选项二", value: "2" },
    { name: "选项三", value: "3" },
  ], [])
  return (
    <>
      <Cell
        clickable
        title="展示描述信息"
        isLink
        onClick={() => setOpen(true)}
      />
      <ActionSheet
        description="这是一段描述信息"
        cancelText="取消"
        actions={actions}
        open={open}
        onSelect={() => setOpen(false)}
        onCancel={() => setOpen(false)}
        onClose={setOpen}
      />
    </>
  )
}

选项状态

通过 loadingdisabled 将选项设置为加载状态或禁用状态,通过 styleclassName 修改样式

function ActionSheetWithStatuses() {
  const [open, setOpen] = useState(false)
  const actions = useMemo(() => [
    { name: "选项一", value: "1", style: { color: "#ee0a24" } },
    { name: "选项二", value: "2", disabled: true },
    { name: "选项三", value: "3", loading: true },
  ], [])
  return (
    <>
      <Cell clickable title="选项状态" isLink onClick={() => setOpen(true)} />
      <ActionSheet
        actions={actions}
        cancelText="取消"
        open={open}
        onSelect={() => setOpen(false)}
        onCancel={() => setOpen(false)}
        onClose={setOpen}
      />
    </>
  )
}

手动控制DOM

使用 ActionSheet.Button 组件后,会在底部展示取消按钮,点击后关闭当前面板并触发 onCancel 事件。
使用ActionSheet.Action组件添加选项, 通过 loadingdisabled 将选项设置为加载状态或禁用状态
通过 ActionSheet.Header 组件可以在菜单顶部显示描述信息,通过选项的 ActionSheet.Action.children 属性可以在 Action 文字的下侧展示描述信息。

function ActionSheetWithStatuses() {
  const [open, setOpen] = useState(true)
  return (
    <ActionSheet open={open} onSelect={() => setOpen(false)} onClose={setOpen}>
      <ActionSheet.Action value="1" style={{ color: "#ee0a24" }} name="着色选项" />
      <ActionSheet.Action value="2" disabled name="禁止选项" />
      <ActionSheet.Action value="3" loading name="选项三" />
      <ActionSheet.Button onClick={() => setOpen(false)}>取消</ActionSheet.Button>
    </ActionSheet>
  )
}

API

ActionSheet Props

参数说明类型默认值
defaultOpen默认是否显示动作面板booleanfalse
open是否显示动作面板booleanfalse
description选项上方的描述信息ReactNode-
cancelText取消按钮文字ReactNode-
actions面板选项列表ActionSheetActionObject[]-
className样式类名string-
style样式对象CSSProperties-
rounded是否为圆角string-

ActionSheetActionObject数据结构

参数说明类型
name标题ReactNode
subname二级标题ReactNode
disabled是否为禁用状态boolean
loading是否为加载状态boolean
valueany
style
className

ActionSheet.Backdrop Props

参数说明类型默认值
className样式类名string-
style样式对象CSSProperties-
duration动画时长,单位毫秒number | string300
closeable点击是否可以关闭booleantrue

ActionSheet.Header Props

参数说明类型默认值
className样式类名string-
style样式对象CSSProperties-
title标题string-
children描述信息string-

ActionSheet.Action Props

参数说明类型默认值
className样式类名string-
style样式对象CSSProperties-
name标题string-
value选项值string-
disabled是否为禁用状态boolean-
loading是否为加载状态boolean-
children描述信息string-

ActionSheet.Button Props

参数说明类型默认值
className按钮类名string-
style按钮样式CSSProperties-
type按钮类型,可选值为 cancelstringbutton
children按钮内容string-

ActionSheet Events

事件名说明回调参数
onSelect点击选项时触发,禁用或加载状态下不会触发event: ActionSheet.ActionEvent
onCancel点击取消按钮时触发-
onClose关闭面板时触发-

主题定制

样式变量

组件提供了下列 CSS 变量,可用于自定义样式,使用方法请参考 ConfigProvider 组件。

名称默认值描述
—action-sheet-description-padding-bottomvar(—padding-md)-
—action-sheet-subname-margin-topvar(—padding-xs)-
—action-sheet-subname-colorvar(—gray-6)-
—action-sheet-subname-font-sizevar(—font-size-sm)-
—action-sheet-subname-line-heightvar(—line-height-sm)-