|
|
|
@ -84,5 +84,21 @@ const closeTab = (path) => {
@@ -84,5 +84,21 @@ const closeTab = (path) => {
|
|
|
|
|
}; |
|
|
|
|
``` |
|
|
|
|
|
|
|
|
|
## 上边的数组扁平化函数 |
|
|
|
|
|
|
|
|
|
```javascript |
|
|
|
|
export const flattenArray = (data, key = "children") => { |
|
|
|
|
const flatRouter: any[] = []; |
|
|
|
|
const flattenRecursion = (data: any) => { |
|
|
|
|
data.forEach((item: any) => { |
|
|
|
|
if (item[key]) flattenRecursion(item[key]); |
|
|
|
|
flatRouter.push(item); |
|
|
|
|
}); |
|
|
|
|
}; |
|
|
|
|
flattenRecursion(data); |
|
|
|
|
return flatRouter; |
|
|
|
|
}; |
|
|
|
|
``` |
|
|
|
|
|
|
|
|
|
## End |
|
|
|
|
至此,整个 Tabs 功能的基本逻辑就已经实现了,完整的代码可以看[这里](https://github.com/YuJian920/YuJian-Blog/blob/Remake/YuJianBlog-Admin/src/context/TabContext.tsx),其实完整的 Tabs 功能还没有结束,例如还有对 Tabs 长度的限制,避免打开的 Tab 太多导致长度过长,还有完备的 Tabs 应该有一个右键菜单,可以实现关闭其他、关闭所有之类更多的功能,这里就不展开谈了,如果有时间的话后边会再写一篇文章补全上述提到的这些功能 |