umi 动态添加tab
时间: 2024-06-08 08:02:32 浏览: 151
umi 是一个基于 React 的开发框架,可以帮助我们快速构建单页应用。在 umi 中,动态添加 tab 可以通过以下步骤实现:
1. 首先,在路由配置文件中定义一个动态路由,用于展示 tab 内容。例如,我们可以在 `src/routes.js` 文件中添加如下代码:
```javascript
export default [
{
path: '/tab/:id',
component: '@/pages/Tab',
},
];
```
2. 接下来,在页面组件中,我们可以通过 `useEffect` 钩子来监听路由变化,并根据路由参数动态加载对应的 tab 内容。例如,在 `src/pages/Tab.js` 文件中添加如下代码:
```javascript
import React, { useEffect, useState } from 'react';
const Tab = (props) => {
const [tabContent, setTabContent] = useState(null);
useEffect(() => {
// 根据路由参数获取对应的 tab 内容
const { match } = props;
const { params } = match;
const { id } = params;
// 根据 id 加载对应的 tab 内容
const loadTabContent = async () => {
const response = await fetch(`/api/tab/${id}`);
const data = await response.json();
setTabContent(data);
};
loadTabContent();
}, []);
return (
<div>
{tabContent && <div>{tabContent}</div>}
</div>
);
};
export default Tab;
```
3. 最后,在需要动态添加 tab 的地方,我们可以使用 `Link` 组件来生成对应的路由链接。例如,在 `src/pages/Home.js` 文件中添加如下代码:
```javascript
import React from 'react';
import { Link } from 'umi';
const Home = () => {
return (
<div>
<ul>
<li>
<Link to="/tab/1">Tab 1</Link>
</li>
<li>
<Link to="/tab/2">Tab 2</Link>
</li>
<li>
<Link to="/tab/3">Tab 3</Link>
</li>
</ul>
</div>
);
};
export default Home;
```
这样,当用户点击不同的 tab 链接时,会动态加载对应的 tab 内容。
阅读全文