FloatMenu 浮动菜单
定义/Definition
提示层式的浮动菜单规则 / Rule
点击背景的任一位置时,可以隐藏菜单;
浮动菜单可以是选择也可以是行为(筛选、跳转…)。
代码演示
// 此处用作demo展示,不要用在生产环境
this.customNavFlag = true;
import { FloatMenu, Button, NavBar } from 'antd-mobile';
const Item = FloatMenu.Item;
const App = React.createClass({
getInitialState() {
return {
visible: false,
visible1: false,
selected: '',
};
},
onSelect(opt) {
this.setState({
visible: false,
selected: opt.props.value,
});
},
handleVisibleChange(visible) {
this.setState({
visible,
});
},
render() {
let overlay = [1, 2, 3].map((i, index) => <Item key={index} value={`option ${i}`}>option {i}</Item>);
overlay = overlay.concat([
<Item key="4" value="disabled" disabled>disabled opt</Item>,
<Item key="5" value="special" iconName="github">special opt</Item>,
<Item key="6" value="button ct" iconName="github">
<Button
size="small"
inline
onClick={() => this.handleVisibleChange(false)}
>
关闭
</Button>
</Item>,
]);
return (<div>
<NavBar iconName={false}
rightContent={<FloatMenu
visible={this.state.visible}
overlay={overlay}
popupAlign={{
offset: [5, 14],
}}
onVisibleChange={this.handleVisibleChange}
onSelect={this.onSelect}
>
<a href="#" style={{ color: 'white' }}>菜单</a>
</FloatMenu>}
>
FloatMenu
</NavBar>
<p>选中了 {this.state.selected}</p>
<div style={{ paddingTop: 80, paddingLeft: 100 }}>
<FloatMenu
visible={this.state.visible1}
overlay={[
<Item key="0" value="0">item 0</Item>,
<Item key="1" value="1">item 1</Item>,
<Item key="2" value="1">item 1</Item>,
]}
placement="topRight"
onVisibleChange={v => this.setState({ visible1: v })}
>
<a href="#">菜单</a>
</FloatMenu>
</div>
</div>);
},
});
ReactDOM.render(<App />, mountNode);
API
FloatMenu
成员 | 说明 | 类型 | 默认值 |
---|---|---|---|
visible(web) | 当前显隐状态 | Boolean | false |
onVisibleChange(web) | 当显隐状态变化时调用 | Function | - |
placement(web) | enum{'left','right','top','bottom', 'topLeft', 'topRight', 'bottomLeft', 'bottomRight'} | String | 'bottomRight' |
popupAlign(web) | 用于设置偏移量等、会被合并到 placement 的设置中,可选值为 dom-align 的alignConfig 配置( points 设置用 placement 代替) | Object | { overflow: { adjustY: 0, adjustX: 0 } } 禁掉位置自动适应 |
overlay | 弹出层内容 | React.node | - |
onSelect | 选中的选项 | Function | - |
style | menu 样式 | Object | - |
triggerStyle(ios/android) | 触发元素外围容器样式 | Object | - |
overlayStyle(ios/android) | 弹出层外围容器样式 | Object | - |
contextStyle(ios/android) | 最外围容器样式 | Object | - |
renderOverlayComponent(ios/android) | 自定义弹出层的外围组件,默认是ScrollView ,示例(options) => <SomeCustomContainer>{options}</SomeCustomContainer> | Function | - |
name(ios/android) | menu名字,用于手动触发开关menu | String | - |
openMenu/closeMenu/toggleMenu(ios/android) | 用于手动开关 menu,参数为上边 menu 的 name . 使用示例:this.refs.mc.refs.menuContext.toggleMenu('m') 见 demo | Function(name) | - |
FloatMenu.Item
成员 | 说明 | 类型 | 默认值 |
---|---|---|---|
children | 节点内容 | String/React.node | - |
disabled | 是否禁用 | Boolean | false |
iconName(web) | icon名称 | String | - |