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

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

作者: 麦曦 | 来源:发表于2020-05-08 17:18 被阅读0次

    弹窗前确认

    一、需要离开提示页面上添加
    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;
     }
    

    相关文章

      网友评论

          本文标题:react中实现路由切换时离开页面确认弹窗提示

          本文链接:https://www.haomeiwen.com/subject/hcfqnhtx.html