添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

Popconfirm 气泡确认框

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

何时使用 #

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

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

代码演示

Delete

最简单的用法。

expand code expand code
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,
);

位置有十二个方向。如需箭头指向目标元素中心,可以设置 arrowPointAtCenter

expand code expand code
import { Popconfirm, message, Button } from 'antd';
const text = 'Are you sure to delete this task?';
function confirm() {
  message.info('Clicked 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,
);
Delete

使用 icon 自定义提示 icon

expand code expand code
import { Popconfirm, Icon } from 'antd';
ReactDOM.render(
  <Popconfirm
    title="Are you sure?"
    icon={<Icon type="question-circle-o" style={{ color: 'red' }} />}
    <a href="#">Delete</a>
  </Popconfirm>,
  mountNode,
);
Delete

使用 okText cancelText 自定义按钮文字。

expand code expand code
import { Popconfirm } from 'antd';
ReactDOM.render(
  <Popconfirm title="Are you sure?" okText="Yes" cancelText="No">
    <a href="#">Delete</a>
  </Popconfirm>,
  mountNode,
);
Delete a task

Whether directly execute:

可以判断是否需要弹出。

expand code expand code
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 (
        <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)
icon 自定义弹出气泡 Icon 图标 ReactNode < Icon type="exclamation-circle" / > 3.8.0
disabled 点击 Popconfirm 子元素是否弹出气泡确认框 boolean false 3.19.8

更多属性请参考 Tooltip

注意 #

请确保 Popconfirm 的子元素能接受 onMouseEnter onMouseLeave onFocus onClick 事件。

Progress 进度条 Result 结果