Popconfirm气泡确认框
点击元素,弹出气泡式的确认框。
何时使用#
目标元素的操作需要用户进一步的确认时,在目标元素附近弹出浮层提示,询问用户。
和 confirm 弹出的全屏居中模态对话框相比,交互形式更轻量。
代码演示
import { Popconfirm, message } from 'antd';
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);import { Popconfirm, message, Button } from 'antd';
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);import { Popconfirm } from 'antd';
ReactDOM.render(
  <Popconfirm title="Are you sure?" okText="Yes" cancelText="No">
    <a href="#">Delete</a>
  </Popconfirm>
, mountNode);import { Popconfirm, Switch, message } from 'antd';
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#
| 参数 | 说明 | 类型 | 默认值 | 
|---|---|---|---|
| title | 确认框的描述 | string|ReactNode | 无 | 
| onConfirm | 点击确认的回调 | function(e) | 无 | 
| onCancel | 点击取消的回调 | function(e) | 无 | 
| okText | 确认按钮文字 | string | 确定 | 
| okType | 确认按钮类型 | string | primary | 
| cancelText | 取消按钮文字 | string | 取消 | 
更多属性请参考 Tooltip。
注意#
请确保 Popconfirm 的子元素能接受 onMouseEnter、onMouseLeave、onFocus、onClick 事件。