react中实现路由切换时离开页面确认弹窗提示

弹窗前确认

一、需要离开提示页面上添加
a.引入Prompt

import { Prompt } from 'react-router-dom';

b.在页面中添加组件,可在render内任一地方添加
<Prompt message='商家信息还未保存,是否离开?' when={true} />

render(){
    return <Prompt message='商家信息还未保存,是否离开?' when={true} />
}

二、在路由页面进行配置
a.Router上添加 getUserConfirmation={getConfirmation}

<Router getUserConfirmation={getConfirmation} >

b.在路由页面添加方法

function getConfirmation(message, callback) { // 至关重要的callback方法,可以异步执行
    if (!window.pageChangeConfirm) { // G.pageChangeConfirm为页面内的全局变量,用于数据交互与条件判断
        callback(true);
        return;
    }
    Modal.confirm({
        title: '离开该页面,表单信息将不被保留?是否确定离开该页面?',
        content: '',
        okText: '离开',
        cancelText: '取消',
        onOk() {
            callback(true);
        },
        onCancel() {
            callback(false);
        },
    });
}

三、触发弹窗
通过设置window.pageChangeConfirm,触发是否弹窗。
例:在componentDidMount设置默认离开是否弹窗。 也可在点击页面时触发修改弹窗参数

 if (isEdit) {
     window.pageChangeConfirm = true;
 }

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。