action-sheet 动作面板
动作面板组件(Action Panel Component)是一 种用户界面组件,通常用于显示操作按钮或命令选项,以便用户可以执行相关操作。
Props参数
名称 | 类型 | 是否必传 | 默认值 | 描述 |
---|---|---|---|---|
visible | boolean | ✅ | false | 是否显示 |
title | ReactNode | 否 | - | 标题 |
actions | IMMAction[] | ✅ | - | 选项 |
footer | ReactNode | false | 否 | - | 自定义底部或者不显示底部 |
onClosed | () => void | 否 | - | 关闭事件 |
onOpened | () => void | 否 | - | 打开事件 |
onSelect | (value: IMMAction, index: number) => void | 否 | - | 点击选项 |
示例
tsx
/* eslint-disable no-console */
import { Component } from 'react'
import MMActionSheet from '~/components/action-sheet'
import MMButton from '~/components/button'
import MMPageContainer from '../_components/page-container'
import PageDemoBlock from '../_components/page-demo-block'
import { View } from '@tarojs/components'
export default class Index extends Component {
state = {
visible: false,
visible2: false,
value: '1',
footer: undefined,
data: Array.from({ length: 3 }).map((_, index) => ({ id: `${index + 1}`, text: `选项${index + 1}` }))
}
render() {
const { value, visible2, data, footer } = this.state
return (
<MMPageContainer title="动作面板">
<PageDemoBlock title="基础使用" className="container">
<MMButton onClick={() => this.setState({ visible: true })} text="打开" />
<MMButton
onClick={() =>
this.setState({
visible: true,
footer: footer === false ? undefined : false
})
}
text={footer === false ? '显示底部' : '不显示底部'}
/>
</PageDemoBlock>
<PageDemoBlock title="自定义底部" className="container">
<MMButton onClick={() => this.setState({ visible2: true })} text="打开" />
</PageDemoBlock>
<MMActionSheet
title="底部自定义"
visible={visible2}
actions={data}
footer={
<View style={{ backgroundColor: '#ffffff' }}>
<MMButton block>确定</MMButton>
</View>
}
onSelect={() => this.setState({ visible2: false })}
onClosed={() => this.setState({ visible2: false })}
/>
<MMActionSheet
title="请选择内容"
visible={this.state.visible}
actions={data}
footer={footer}
onOpened={this.handleOpend}
onClosed={this.onCancel}
onSelect={this.onOptionsClick}
/>
</MMPageContainer>
)
}
onCancel = () => {
this.setState({ visible: false })
console.log('面板关闭')
}
onOptionsClick = (value: { id: string; text: string }, index: number) => {
this.setState({
value: value.id,
visible: false
})
console.log('选择了', value, index)
}
handleOpend = () => {
console.log('面板打开了')
}
}