当前位置: 首页 > news >正文

同时做网站建设和代账最新版wordpress

同时做网站建设和代账,最新版wordpress,app脚本制作教程,宜昌网站seo收费在 react umi 中对离开页面的行为进行自定义弹窗拦截控制。以下为可选的方案分析。 wrapper 首先,因为项目框架是 umi,最先想到了 umi 路由的 wrapper 装饰器,但仔细一想又不太对, wrapper 争对于跳转到某个特定页面的前置行为…

在 react + umi 中对离开页面的行为进行自定义弹窗拦截控制。以下为可选的方案分析。

wrapper

首先,因为项目框架是 umi,最先想到了 umi 路由的 wrapper 装饰器,但仔细一想又不太对, wrapper 争对于跳转到某个特定页面的前置行为,而我需要是离开某个页面行为的拦截,该思路 Pass。

beforeunload

其次,想到的是原生的 windows 事件:beforeunload

useEffect(()=> {  window.addEventListener('beforeunload', (event: BeforeUnloadEvent) => {  event.preventDefault();  event.returnValue = "";  })  
}, [])

不过这样做,只能拦截到刷新行为,同时还是浏览器默认的那个巨丑的弹框,Pass。

history.block

最后,umi 提供了 history(类似 react-router v4 的 useHistory),利用其 block 方法可以实现我们的需求

需求概述:当提交表单后,页面处于加载等待结果的过程中,需要拦截用户离开页面的行为,通过弹框警告其需要等待过程完成才能离开页面,仅提供 确定/知道 按钮,不提供继续按钮。

思路:通过 history.block 监听用户离开的事件,当页面处于 loading 状态,阻塞页面,并显示自定义弹框,弹框中有一个确定按钮,点击效果仅为关闭这个弹窗;当页面不处于 loading,解锁路由;如果弹窗需要提供继续离开的按钮,可以手动 history.push(next) 到之前触发 block 时获取到的下一个路由(next),伪代码:

import { Button, Modal } from 'antd';
import { history } from '@umijs/max';const [loading, setLoading] = useState(false);  // 某容器加载
const [blockOpen, setBlockOpen] = useState(false);
const [unblock, setUnblock] = useState<Function>();
const [next, setNext] = useState('');useEffect(()=> {  if (loading) {  setUnblock(history.block(({location})=> {  setNext(location.pathname);setBlockOpen(true);return false;  }))} else {unblock?.(); 
}, [loading, unblock])const Leave = () => <Button onClick={() => {unblock?.();if (next) {history.push(next);}
}}><Button>export default function Reconc() {return(<>/** 上面应当有一个容器绑定loading,通过某些控件控制器其加载状态 */<Modal open={blockOpen} footer={<Button type="primary" onClick={() => setBlockOpen(false)}><Button>}><span>操作尚未完成,请等待操作结束再离开页面!<span></Modal></>)
}

基本实现方案就是这样,Bingo!

http://www.yayakq.cn/news/553584/

相关文章:

  • 烟台做网站哪里好中国建设银行大学生招聘信息网站
  • 网站建设公司服务公司网站企业优化
  • 市桥做网站商城类网站怎么优化
  • 校园网站开发背景好的制造公司站制作
  • 有个网站是做视频相册的河南制作网站电话
  • 网站维护北京自己建的网站如何推广
  • 专做零食的网站网站权重查询接口
  • 苏州网站建设制作中国战事新闻最新消息
  • 合肥企业建站系统模板wordpress 开源app
  • 精品网站建重庆唐卡装饰口碑怎么样
  • 网站logo在哪里虚拟资源下载源码wordpress
  • 企业网站建设开题报告是什么网站上传的流程图
  • 馆陶网站建设费用wordpress站点标题字体
  • 欧美网站模板下载温州网站推广哪家好
  • 小说网站模板wordpress的atl属性怎么设置
  • 网站界面设计说明淄博网站制作多样定制
  • 光谷做网站推广哪家好国土分局网站建设方案
  • 网站建设 考试题目360浏览器打开是2345网址导航
  • 佛山狮山网站建设wordpress 重新生成
  • 如何获取网站js图片网络推广的几种主要方法
  • 杭州网站提升排名seo引流软件
  • 网站推广运营实战培训个体工商户年报登录入口
  • 快手自媒体平台注册搜外seo视频 网络营销免费视频课程
  • 移动网站开发教学大纲网站添加外链
  • 一套网站源码多少钱域名跟网站的区别吗
  • 厦门购买域名以后搭建网站做网站让用seo刷新是哪个键
  • 公司设计网站推荐seo课程培训班
  • 企业网站建设选题依据免费推广网站在线观看
  • 最早做弹幕的网站做我女朋友程序网站
  • 东莞企业网站找谁wordpress wp admin