相关讨论:https://github.com/ant-design/ant-design-pro/issues/220
道理都懂,但有时候需求下来很难推掉。
昨天有一个朋友在群里问,有一点想法,所以今天搞了一个不是很好的方案。
有需要的朋友可以参考一下。
源码:@alitajs/tabs-layout/
嵌套路由的页面无法状态保持,但可以多tabs切换(不能状态保持的多tabs有什么意义?)
可能会修也可能不会,因为我们在真实项目中,嵌套路由用的比较少。



比如将pro项目改成多 Tabs ,只改需要10行代码。详情可以查看 https://github.com/xiaohuoni/umi-antd-pro/commit/c75e3a60ab9b2c33e14efc216a6db10c3c1b3b52
yarn add @alitajs/tabs-layout
export default {
plugins:['@alitajs/tabs-layout'],
tabsLayout: [/./], // 这里表示所有的页面
};
tabsLayout 是一个数组,写明需要使用 tabs 的页面,支持字符串和正则表达式,如需要全部匹配,可以设置 tabsLayout: [/./]。
需要使用 TabsLayout 替换 children。
import React from 'react';
import { TabsLayout } from 'alita';
const BasicLayout: React.FC = props => {
return (
<div>
- { props.children }
+ <TabsLayout {...props}/>
</div>
);
};
export default BasicLayout;
umi 会支持 keep live ,到时候给layout 来个 pr,一键支持
我也在等umi的keep alive 😊
mark
嵌套路由的状态可以用model存下来,匹配路由后再去model里找,而不是重新生成组件。
我现在的方案的坑是,页内链接带参数跳转到新的tab,然后点返回或者浏览器点后退,参数丢失,或者参数不丢失,但组件拿不到参数各种问题。
mark
@xiaohuoni 看了演示网站,切换标签很卡, 没有iframe流畅
mark
Most helpful comment
新鲜出炉,欢迎体验:https://github.com/MudOnTire/antd-pro-page-tabs
完美保持tab中的状态。