当前位置:网站首页>不想当Window的Dialog不是一个好Modal,弹窗翻身记...
不想当Window的Dialog不是一个好Modal,弹窗翻身记...
2022-08-03 00:54:00 【InfoQ】
弹窗是Windows的灵魂
弹窗其实是一种多线程
弹窗其实就是Page
弹窗是一种keep-alive
弹窗与Window
- Window里面装的是独立的Page,而Dialog里面装的是一个独立的Fragment;
- Window里面不仅Dom元素是独立的,运行环境也是独立的,而Dialog只是Dom元素独立;
- Window拥有独立的历史记录栈,可以前进/后退/刷新,而Dialog没有这些功能;
没有Window的SPA是不完整的
<a href="xxx" target="_blank">
window.open(xxx)
实现虚拟Window
- 它里面装的是独立的Page而非Fragment,仅根据Url就可以重建弹窗,例如http://admin-react-antd.eluxjs.com/admin/member/item/edit/50?__c=_dialog
- 它里面装的Page,不仅有独立的Dom结构,还有独立的
全局Store
,类似于实现与外界隔离的运行环境。
- 它自带独立的历史记录栈,基于它的每一个路由跳转都将自动形成一条历史记录。
- 它提供类似浏览器窗口的工具条:关闭/后退/刷新。如:文章列表=> 点击标题 => 点击作者 => 点击文章数。然后你可以依次回退每一步操作,也可一次性全部关闭。
- 它提供窗口最大化、最小化按钮,如:文章详情,窗口左上角按钮;并支持默认最大化,如:创建文章
- 只需一句话即可打开新窗口,例如
<Link to="/article/list/index" action="push" target="window">
:新窗口打开
<Link to="/article/list/index" action="push" target="page">
:本窗口打开
- Window中可以再开新窗口,最多可达10级,自动维护层级关系。
- 弹窗再弹弹窗体验不好?多层弹窗时自动隐藏下层弹窗,关闭上层弹窗自动恢复下层弹窗,保证每一时刻始终之会出现一层弹窗。
- 轻松实现是否keep-alive。
keep-alive
优点是用户体验好,缺点是太TM占资源(需要缓存所有Dom元素还有相关内存变量),现在使用虚拟Windw,你想keep-alive你就在新窗口中打开,不想keep-alive就在原窗口中打开,随意控制。
项目地址
虚拟Window
- React版本
- github:https://github.com/hiisea/elux-react-antd-admin
- gitee:https://gitee.com/hiisea/elux-react-antd-admin-fork
- Vue版本
- github:https://github.com/hiisea/elux-vue-antd-admin
- gitee:https://gitee.com/hiisea/elux-vue-antd-admin-fork
边栏推荐
猜你喜欢
Greenplum database failure analysis, can not listen to the port
聊聊 Nacos
高并发基石:多线程、守护线程、线程安全、线程同步、互斥锁,一文扫尽!...
基于rt-thread studio的STM32裸机开发——LED
作业8.2 线程同步互斥机制——互斥锁
微信小程序--》条件与列表渲染以及WXSS模板样式
嵌入式开发:嵌入式基础——’ ’和” ”的区别
吴恩达深度学习deeplearning.ai——第一门课:神经网络与深度学习——第一节:深度学习概论
Day017 封装
torchvision.datasets.ImageFolder使用详解
随机推荐
Servlet——请求(request)与响应(response)
Understand the next hop address in the network topology in seconds
Nuxt 所有页面都设置上SEO相关标签
精心整理16条MySQL使用规范,减少80%问题,推荐分享给团队
mysql容器数据卷持久化
和睦家私有化后换帅:新风天域吴启楠任CEO 李碧菁靠边站
【飞控开发高级教程2】疯壳·开源编队无人机-遥控整机代码走读、编译与烧写
torchvision.datasets.ImageFolder使用详解
增删改查这么多年,最后栽在MySQL的架构设计上!
NVM和NRM
线性DP
VS Code 这么牛,再次印证了一句名言
Auto.js 特殊定位控件方法 不能在ui线程执行阻塞操作,请使用setTimeout代替
Auto.js special positioning control method cannot perform blocking operations on the ui thread, please use setTimeout instead
如何正确地配置入口文件?
Nacos配置中心之事件订阅
10大领域5大过程47子过程快速记忆
德邦科技通过注册:年营收5.8亿 国家集成电路基金为大股东
Brute force recursion to dynamic programming 07 (516. Longest palindrome subsequence)
Jenkins汉化设置