antd Model.confirm 添加自定义按钮

有时候需求就是这样,不做也得做 

import React, { Component } from 'react';
import { Link, Prompt } from 'react-router-dom';
import {Row,Col,message, Modal,Input,Button,Select,Icon } from 'antd';
import 'antd/dist/antd.css';

const modal = Modal.confirm;

export default class Page3 extends Component {

    state={

    }

  // 销毁所有弹框
    closeConfirm(){
        Modal.destroyAll();
    }

  //向用户确认,返回true就直接跳转,返回字符串有提示框出来,返回false不跳转
    confirmToSave(location){
        modal({
            title: '',
            content: <div>
                内容已修改,离开时是否需要保存
                <Button style={{position:'absolute',right:'160px',top:'85px'}}
                    onClick={this.closeConfirm.bind(this)}>取消</Button>
            </div>,
            okText: '是',
            cancelText:'否',
            mask:false,
            icon: <Icon type="exclamation-circle" />,
            onOk:()=>{    // 点击'是',处理一些业务在跳转
                setTimeout(()=>{ // 两秒后跳转页面
                    window.location.href = location.pathname;
                },2000);
                return new Promise((resolve, reject) => {
                    setTimeout(Math.random() > 0.5 ? resolve : reject, 1000);
                }).catch(() => console.log('Oops errors!'));
            },
            onCancel:() => {    // 点击 ‘否’,说明用户不想做任何事情,直接跳转
                window.location.href = location.pathname;
            },
        });
        return false;
    }

  render() {
    return (
      <div>
          <Prompt message={this.confirmToSave.bind(this)}/>
          <h1>我是Page3</h1>
          <Link to="/page1">去page1那</Link>
          <br/>
          <Link to="/page2">去page2那</Link>
          <br/>
          <Link to="/markdownEditor">去markdownEditor那</Link>
      </div>
    );
  }
}

 

### Ant Design Modal 使用指南与示例 Ant Design 是一个广泛使用的 React UI 库,而其对应的 Vue 版本称为 Ant Design Vue。无论是 React 还是 Vue,Modal 组件都是用于显示对话框的重要工具之一。以下是关于 Ant Design 和 Ant Design Vue 中 Modal 组件的一些核心使用方法和示例。 #### 基础用法 在 Ant Design 或 Ant Design Vue 中,可以通过 `Modal` 组件创建标准的模态窗口。以下是一个简单的基础示例: ```javascript import { Modal, Button } from 'ant-design-vue'; const App = { data() { return { isModalVisible: false, }; }, methods: { showModal() { this.isModalVisible = true; }, handleOk() { console.log('User clicked OK'); this.isModalVisible = false; }, handleCancel() { console.log('User canceled the modal'); this.isModalVisible = false; }, }, }; ``` 在此基础上,可以定义模板部分来渲染该组件[^1]: ```html <template> <div> <Button @click="showModal">Open Modal</Button> <Modal v-model:visible="isModalVisible" title="Basic Modal" @ok="handleOk" @cancel="handleCancel"> Some contents... </Modal> </div> </template> ``` #### 预置消息提示框 除了常规的自定义模态框外,Ant Design 提供了一些预设的消息提示框函数,例如 `Modal.confirm`, `Modal.info`, `Modal.success`, `Modal.warning`, 和 `Modal.error`。这些函数可以直接调用来快速弹出特定类型的对话框。 下面展示了如何隐藏默认的确认按钮以适应某些特殊场景下的需求[^2]: ```javascript Modal.warning({ title: '警告', content: '这是一个带有隐藏按钮的警告框。', okButtonProps: { style: { display: 'none' } }, // 隐藏确定按钮 }); ``` 如果需要完全移除底部操作栏,则可通过设置 `footer` 属性为空数组实现: ```javascript Modal.info({ title: '通知', content: '此信息框不提供任何交互选项。', footer: [], // 移除所有底部按钮 }); ``` #### 动态加载内容 对于大型应用来说,在打开之前就加载好所有的数据可能会增加页面初始载入时间。因此推荐仅当用户触发事件后再去获取远程数据并填充到模态窗体内。 ```javascript function fetchContent() { return new Promise((resolve) => setTimeout(() => resolve('动态加载的内容'), 1000)); } Modal.confirm({ title: '等待内容...', content: '', onOk() { return fetchContent().then((content) => (this.content = content)); // 更新内容 }, }); ``` 以上就是有关于 Ant Design 及其 Vue 实现中的 Modal 组件的主要介绍以及一些实用技巧。希望对你有所帮助! ---
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值