Popup 弹出层

从顶部或底部浮出的模态,提供标题和关闭按钮,展示和当前内容相关的信息或提供相关操作。

规则

  • 提供清晰的关闭按钮。

  • Popup 会打断用户操作,所以用在重要的时候, eg.买入股票。

代码演示

向下弹出效果

Popup 向下弹出效果

  1. import { Popup, List, Button, Menu } from 'antd-mobile';
  2. const SelectorDataForPopup = [
  3. {
  4. label: '中餐',
  5. value: '21',
  6. }, {
  7. label: '还没生效',
  8. value: '22',
  9. disabled: true,
  10. }, {
  11. label: '关闭浮层',
  12. value: 'qx',
  13. }, {
  14. label: '自助餐',
  15. value: '24',
  16. }, {
  17. label: '快餐',
  18. value: '25',
  19. }, {
  20. label: '小吃',
  21. value: '26',
  22. },
  23. ];
  24. const Test = React.createClass({
  25. getInitialState() {
  26. return {
  27. sel: '',
  28. };
  29. },
  30. onClick() {
  31. Popup.show(
  32. <List title="账户总览 (已绑定3个)">
  33. <List.Body>
  34. <List.Item
  35. thumb="https://zos.alipayobjects.com/rmsportal/dNuvNrtqUztHCwM.png"
  36. onClick={() => { this.onClose('cancel'); }}
  37. >东吴证券 (5728)</List.Item>
  38. <List.Item
  39. thumb="https://zos.alipayobjects.com/rmsportal/UmbJMbWOejVOpxe.png"
  40. onClick={() => { this.onClose('cancel'); }}
  41. >东吴证券 (5728)</List.Item>
  42. <List.Item
  43. thumb="https://zos.alipayobjects.com/rmsportal/UmbJMbWOejVOpxe.png"
  44. arrow="horizontal"
  45. onClick={() => { this.onClose('opt 1'); }}
  46. >更多</List.Item>
  47. </List.Body>
  48. </List>
  49. );
  50. },
  51. onClose(sel) {
  52. if (sel === 'opt 1') {
  53. this.newInstance();
  54. return;
  55. }
  56. this.setState({ sel });
  57. Popup.hide();
  58. },
  59. newInstance() {
  60. const ins = Popup.newInstance();
  61. const hide = (value) => {
  62. if (value[0] === 'qx') {
  63. ins.hide();
  64. }
  65. };
  66. ins.show(<Menu
  67. level={1}
  68. value={[SelectorDataForPopup[0]]}
  69. data={SelectorDataForPopup}
  70. onChange={hide}
  71. />, { maskClosable: false });
  72. },
  73. render() {
  74. return (<div style={{ padding: '15px' }}>
  75. <Button type="ghost" onClick={this.onClick}>显示</Button>
  76. </div>);
  77. },
  78. });
  79. ReactDOM.render(<Test />, mountNode);

向上弹出效果

Popup 向上弹出效果

  1. import { Popup, List, Button } from 'antd-mobile';
  2. const Test = React.createClass({
  3. getInitialState() {
  4. return {
  5. sel: '',
  6. };
  7. },
  8. onClick() {
  9. Popup.show(<div>
  10. <List title={
  11. <div style={{ position: 'relative' }}>
  12. 委托买入
  13. <span style={{
  14. position: 'absolute', right: 3, top: -5, fontSize: '1.4em',
  15. }} onClick={() => this.onClose('cancel')}
  16. >x</span>
  17. </div>
  18. }>
  19. <List.Body>
  20. <List.Item>股票名称</List.Item>
  21. <List.Item>股票代码</List.Item>
  22. <List.Item>买入价格</List.Item>
  23. <List.Item>买入数量</List.Item>
  24. </List.Body>
  25. </List>
  26. <ul style={{ padding: 10 }}>
  27. <li>投资说明投资说明...</li>
  28. <li style={{ marginTop: 10 }}>
  29. <Button type="primary" onClick={() => this.onClose('cancel')}>买入</Button>
  30. </li>
  31. </ul>
  32. </div>, { animationType: 'slide-up' });
  33. },
  34. onClose(sel) {
  35. this.setState({ sel });
  36. Popup.hide();
  37. },
  38. render() {
  39. return (<div style={{ padding: '15px' }}>
  40. <Button type="ghost" onClick={this.onClick}>显示</Button>
  41. </div>);
  42. },
  43. });
  44. ReactDOM.render(<Test />, mountNode);

Popup弹出层 - 图1

API

static show(content: React.Element, options: Object):

options可选项:

  • maskClosable (bool) - 点击蒙层是否允许关闭,默认允许

  • animationType (string) - 可选slide-down(默认)、slide-up 弹出动画类型

  • transitionName (string) (web) 自定义显示隐藏变换动画

  • maskTransitionName (string) (web) 自定义遮罩层变换动画

static hide(): 关闭 Popup

static newInstance() (web only)

有些情况下,页面需要多处出现 Popup ,或在 Popup 里再产生 Popup。 返回 Popup 实例对象。对象包括:
  • show (function) - 同 static show

  • hide (function) - 同 static hide