• Popconfirm 气泡确认框

    点击元素,弹出气泡式的确认框。

    何时使用

    目标元素的操作需要用户进一步的确认时,在目标元素附近弹出浮层提示,询问用户。

    confirm 弹出的全屏居中模态对话框相比,交互形式更轻量。

    代码演示

    最简单的用法。
    expand code expand code
    import { Popconfirm, message } from 'choerodon-ui';
    
    function confirm(e) {
      console.log(e);
      message.success('Click on Yes');
    }
    
    function cancel(e) {
      console.log(e);
      message.error('Click on No');
    }
    
    ReactDOM.render(
      <Popconfirm title="Are you sure delete this task?" onConfirm={confirm} onCancel={cancel} okText="Yes" cancelText="No">
        <a href="#">Delete</a>
      </Popconfirm>,
      mountNode);
    
    位置有十二个方向。如需箭头指向目标元素中心,可以设置 arrowPointAtCenter
    expand code expand code
    import { Popconfirm, message, Button } from 'choerodon-ui';
    
    const text = 'Are you sure delete this task?';
    
    function confirm() {
      message.info('Click on Yes.');
    }
    
    ReactDOM.render(
      <div className="demo">
        <div style={{ marginLeft: 70, whiteSpace: 'nowrap' }}>
          <Popconfirm placement="topLeft" title={text} onConfirm={confirm} okText="Yes" cancelText="No">
            <Button>TL</Button>
          </Popconfirm>
          <Popconfirm placement="top" title={text} onConfirm={confirm} okText="Yes" cancelText="No">
            <Button>Top</Button>
          </Popconfirm>
          <Popconfirm placement="topRight" title={text} onConfirm={confirm} okText="Yes" cancelText="No">
            <Button>TR</Button>
          </Popconfirm>
        </div>
        <div style={{ width: 70, float: 'left' }}>
          <Popconfirm placement="leftTop" title={text} onConfirm={confirm} okText="Yes" cancelText="No">
            <Button>LT</Button>
          </Popconfirm>
          <Popconfirm placement="left" title={text} onConfirm={confirm} okText="Yes" cancelText="No">
            <Button>Left</Button>
          </Popconfirm>
          <Popconfirm placement="leftBottom" title={text} onConfirm={confirm} okText="Yes" cancelText="No">
            <Button>LB</Button>
          </Popconfirm>
        </div>
        <div style={{ width: 70, marginLeft: 304 }}>
          <Popconfirm placement="rightTop" title={text} onConfirm={confirm} okText="Yes" cancelText="No">
            <Button>RT</Button>
          </Popconfirm>
          <Popconfirm placement="right" title={text} onConfirm={confirm} okText="Yes" cancelText="No">
            <Button>Right</Button>
          </Popconfirm>
          <Popconfirm placement="rightBottom" title={text} onConfirm={confirm} okText="Yes" cancelText="No">
            <Button>RB</Button>
          </Popconfirm>
        </div>
        <div style={{ marginLeft: 70, clear: 'both', whiteSpace: 'nowrap' }}>
          <Popconfirm placement="bottomLeft" title={text} onConfirm={confirm} okText="Yes" cancelText="No">
            <Button>BL</Button>
          </Popconfirm>
          <Popconfirm placement="bottom" title={text} onConfirm={confirm} okText="Yes" cancelText="No">
            <Button>Bottom</Button>
          </Popconfirm>
          <Popconfirm placement="bottomRight" title={text} onConfirm={confirm} okText="Yes" cancelText="No">
            <Button>BR</Button>
          </Popconfirm>
        </div>
      </div>,
      mountNode);
    
    使用 okTextcancelText 自定义按钮文字。
    expand code expand code
    import { Popconfirm } from 'choerodon-ui';
    
    ReactDOM.render(
      <Popconfirm title="Are you sure?" okText="Yes" cancelText="No">
        <a href="#">Delete</a>
      </Popconfirm>,
      mountNode);
    
    可以判断是否需要弹出。
    expand code expand code
    import { Popconfirm, Switch, message } from 'choerodon-ui';
    
    class App extends React.Component {
      state = {
        visible: false,
        condition: true, // Whether meet the condition, if not show popconfirm.
      }
    
      changeCondition = (value) => {
        this.setState({ condition: value });
      }
    
      confirm = () => {
        this.setState({ visible: false });
        message.success('Next step.');
      }
    
      cancel = () => {
        this.setState({ visible: false });
        message.error('Click on cancel.');
      }
    
      handleVisibleChange = (visible) => {
        if (!visible) {
          this.setState({ visible });
          return;
        }
        // Determining condition before show the popconfirm.
        console.log(this.state.condition);
        if (this.state.condition) {
          this.confirm(); // next step
        } else {
          this.setState({ visible }); // show the popconfirm
        }
      }
    
      render() {
        return (
          <div>
            <Popconfirm
              title="Are you sure delete this task?"
              visible={this.state.visible}
              onVisibleChange={this.handleVisibleChange}
              onConfirm={this.confirm}
              onCancel={this.cancel}
              okText="Yes"
              cancelText="No"
            >
              <a href="#">Delete a task</a>
            </Popconfirm>
            <br />
            <br />
            Whether directly execute:<Switch defaultChecked onChange={this.changeCondition} />
          </div>
        );
      }
    }
    
    ReactDOM.render(<App />, mountNode);
    

    API

    参数 说明 类型 默认值
    cancelText 取消按钮文字 string 取消
    okText 确认按钮文字 string 确定
    okType 确认按钮类型 string primary
    title 确认框的描述 string|ReactNode
    onCancel 点击取消的回调 function(e)
    onConfirm 点击确认的回调 function(e)

    更多属性请参考 Tooltip

    注意

    请确保 Popconfirm 的子元素能接受 onMouseEnteronMouseLeaveonFocusonClick 事件。