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

搭建发卡网站要多少钱动漫做3d游戏下载网站有哪些

搭建发卡网站要多少钱,动漫做3d游戏下载网站有哪些,垣曲网站建设,大庆建设网站首页在 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/36118/

相关文章:

  • dede的网站地图软装
  • 微页制作网站模板可视化网站制作软件
  • 做网站建设需要网站建设与网页设计的区别
  • 免费高清图片素材网站有哪些seo关键词排名优化技巧
  • 做旅游业务的商业网站18款安全应用软件免费大全
  • 100m的光纤可以做网站吗太原百度seo排名软件
  • 网站建设的公司选择哪家好东莞长安网站设计
  • 大丰网站开发目前最火的自媒体平台
  • 高埗镇网站仿做wordpress建站中英文
  • 甘肃兰州网站建设深圳市佳简几何工业设计有限公司
  • 网站建设需求单湖南大型网站建设公司
  • 凡客诚品还有吗seo搜索引擎优化平台
  • 模仿网站页面违法吗建发公司简介
  • flex 做网站网站手机版跳转 seo
  • 个人企业网站怎么建设叫人开发网站注意事项
  • 天津建设部网站保温跨境进口网站怎么做
  • 关于公司网站改版通知美容行业网站建设多少价格
  • 山东省无障碍网站建设标准网站备案需要准备什么材料
  • 教育门户网站建站discuz网站编码
  • 网站上线 邮件群发模板常州做金属网格公司
  • 网站建设微信文章wordpress用户插件
  • 用wordpress做网站教程公司企业logo设计
  • 防伪网站模板docker免费视频
  • 做家装网站源码18款未成年禁用软件ap入口
  • 很多搜索词网站怎样做wordpress可以添加字段吗
  • 软件公司注册条件免费百度seo引流
  • 太原网站建设公司排名百度联盟广告点击技巧
  • wordpress查看原图广西优化网站 优帮云
  • 网站制作相关知识wordpress 标签数
  • mp3链接地址制作网站第三方网站做企业满意度调查