(基于pro 2.0)基于Ant Design Pro 的 (多标签tabs、拖拽、富文本、多功能table、多选Select)

Ant Tabs(pro 2.0)

本文介绍Ant Tabs一些 新增的功能和原理及思路介绍及更新日志。

实现多页签的原理及思路

Ant Tabs 基于 Ant Design Pro 2.0 基础上修改的多标签Tabs,修改此多标签也是工作上的需求,原来后台项目也是基于 Antd Design 来开发的,在 github上demo也不是很多,基本上也不符合自己的需求,于是就本着自己动手,丰衣足食的思想,自己在Antd Design的基础上修改了部分文件。

但是,中间也走了很多弯路,踩了很多坑,修改了多个版本最终才成了现在的需求,不过我觉得还可以,仅供大家参考。

引入 ant Tabs

主要修改文件 react-ant/src/layouts/BasicLayout.js 中引入Tabs 组件

代码解析

constructor(props) {
    super(props);
    const {routes} = props.route,routeKey = '/home/home'; // routeKey 为设置首页设置 试试 '/dashboard/analysis' 或其他key值
    const tabLists = this.updateTree(routes);
    let tabList=[];
    tabLists.map((v) => {
      if(v.key === routeKey){
        if(tabList.length === 0){
          v.closable = false
          tabList.push(v);
        }
      }
    });
    this.state = ({
        tabList:tabList,
        tabListKey:[routeKey],
        activeKey:routeKey,
        routeKey
    })

    this.getPageTitle = memoizeOne(this.getPageTitle);
    this.matchParamsPath = memoizeOne(this.matchParamsPath, isEqual);
  }
  • tabList: 用来存储打开的多标签
  • tabListKe:用来判断 tabList 是否重复保持tabList标签唯一性
  • activeKey:当前激活 tab 面板的 key
  • routeKey: 为设置首页设置 试试 ‘/dashboard/analysis’ 或其他key值
updateTree = data => {
    const treeData = data;
    const treeList = [];
    // 递归获取树列表
    const getTreeList = data => {
      data.forEach(node => {
        if(!node.level){
          treeList.push({ tab: node.name, key: node.path,locale:node.locale,closable:true,content:node.component });
        }
        if (node.routes && node.routes.length > 0) { //!node.hideChildrenInMenu &&
          getTreeList(node.routes);
        }
      });
    };
    getTreeList(treeData);
    return treeList;
  };
  • updateTree函数:为递归 routes 多维数据变成一维数据
 <SiderMenu
            logo={logo}
            theme={navTheme}
            onCollapse={this.handleMenuCollapse}
            menuData={menuData}
            isMobile={isMobile}
            {...this.props}
            onHandlePage ={this.onHandlePage}
          />
  • onHandlePage: 点击左侧及页面内触发的函数
 {hidenAntTabs ?
              (<Authorized authority={routerConfig} noMatch={<Exception403 />}>
              {children}
                </Authorized>) :
              (this.state.tabList && this.state.tabList.length ? (
              <Tabs
                // className={styles.tabs}
                activeKey={activeKey}
                onChange={this.onChange}
                tabBarExtraContent={operations}
                tabBarStyle={{background:'#fff'}}
                tabPosition="top"
                tabBarGutter={-1}
                hideAdd
                type="editable-card"
                onEdit={this.onEdit}
              >
                {this.state.tabList.map(item => (
                  <TabPane tab={item.tab} key={item.key} closable={item.closable}>
                    <Authorized authority={routerConfig} noMatch={<Exception403 />}>
                      {/*{item.content}*/}
                      <Route key={item.key} path={item.path} component={item.content} exact={item.exact} />
                    </Authorized>
                  </TabPane>
                ))}
              </Tabs>
            ) : null)}
  • hidenAntTabs:添加这个字段为在抽屉屑中控制是否显示多标签

相关链接

更新日志

2019-04-23

  • 增加功能:增加了左侧点击出发的函数,及çonHandlePage ={this.onHandlePage}
  • 增加文档:主要解释了Ant Tabs的原理及功能

2019-04-18

  • 增加功能:AntTableFinder-多功能Table 深度封装 ant Table 表格

2019-04-10

  • 增加功能:Tabs-支持多标签功能
  • 增加功能:支持-关闭当前标签页、关闭其他标签页、关闭全部标签页
  • 增加功能:拖拽组件
  • 增加功能:富文本编译器
  • 增加功能:支持-是否 隐藏 Ant-Tabs 功能

反馈

如果你觉得有用,对你有些帮助,欢迎给个Star?,如果你还为明白及文中有错误,请提交Issues?

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Ant Design Pro 中实现Tab页切换功能非常简单,只需要使用 `Tabs` 和 `TabPane` 组件即可。 以下是一个基本的示例代码: ```jsx import { Tabs } from 'antd'; const { TabPane } = Tabs; function callback(key) { console.log(key); } function TabDemo() { return ( <Tabs defaultActiveKey="1" onChange={callback}> <TabPane tab="Tab 1" key="1"> Content of Tab Pane 1 </TabPane> <TabPane tab="Tab 2" key="2"> Content of Tab Pane 2 </TabPane> <TabPane tab="Tab 3" key="3"> Content of Tab Pane 3 </TabPane> </Tabs> ); } export default TabDemo; ``` 在上面的示例中,我们首先引入了 `Tabs` 和 `TabPane` 组件,然后定义了一个回调函数 `callback` 来处理切换事件。接着在 `Tabs` 中定义了三个 `TabPane`,每个 `TabPane` 都有一个唯一的 `key` 属性和对应的标签名。我们将默认激活的 `TabPane` 设置为第一个,通过 `onChange` 属性来监听切换事件并调用 `callback` 函数。 最后,我们将 `TabDemo` 组件导出,可以在其他组件中引入并使用。 ### 回答2: Ant Design Pro 是一个基于 Ant Design 设计规范的企业级中后台前端/设计解决方案,提供了丰富的组件和布局样式,使得开发者可以快速构建出美观、实用的管理系统。 要实现 tab 页切换功能,可以使用 Ant Design Pro 中提供的 Tabs 组件。使用 Tabs 组件,需要在业务组件中引入 Tabs、TabPane 组件,并通过 state 来控制当前选中的标签页。 首先,在业务组件中引入 Tabs 和 TabPane 组件: ```javascript import { Tabs } from 'antd'; const { TabPane } = Tabs; ``` 然后,使用 Tabs 组件创建标签页,并通过 state 来控制当前选中的标签页: ```javascript class MyComponent extends React.Component { state = { activeKey: '1', // 选中的标签页的 key } onChange = activeKey => { this.setState({ activeKey }); } render() { const { activeKey } = this.state; return ( <Tabs activeKey={activeKey} onChange={this.onChange}> <TabPane tab="Tab 1" key="1"> Content of Tab Pane 1 </TabPane> <TabPane tab="Tab 2" key="2"> Content of Tab Pane 2 </TabPane> <TabPane tab="Tab 3" key="3"> Content of Tab Pane 3 </TabPane> </Tabs> ); } } ``` 在上面的代码中,Tabs 组件的 activeKey 属性用来设置当前选中的标签页,onChange 属性用来监听标签页切换事件。通过在 state 中保存选中的标签页的 key,并在切换标签页时更新 activeKey 的值来实现标签页的切换。 以上就是使用 Ant Design Pro 实现 tab 页切换功能的步骤。通过引入 Tabs 和 TabPane 组件,并结合 state 来控制选中的标签页,可以实现简单而实用的标签页切换功能。 ### 回答3: Ant Design Pro 是一个开箱即用的企业级中后台前端/设计解决方案,提供了丰富的组件和模板,快速搭建出符合企业需求的系统。要实现 Tab 页切换功能,需要进行以下步骤: 1. 在 Ant Design Pro 项目中,安装 react-router-dom 库,用于实现路由功能。 2. 在 src 目录下创建一个新的文件夹 pages,用于存放各个页面组件。 3. 在 pages 文件夹下创建一个新的文件,例如 TabPage.js,用于编写 Tab 页的内容。 4. 在 TabPage.js 文件中,使用 Ant Design Pro 提供的 Tabs 组件,创建一个选项卡布局。 5. 在 Tabs 组件的 TabPane 子组件中,通过编写 JSX 代码,实现各个 Tab 页的内容。 6. 在 TabPage.js 文件中,使用 react-router-dom 提供的路由功能,将 Tabs 组件与对应的 Tab 页内容进行绑定。 7. 在 src 目录下的 router.js 文件中,配置路由表,将 TabPage.js 组件与对应的路径进行映射。 8. 在 src 目录下的 menu.js 文件中,配置菜单选项,将 Tab 页添加到菜单中,作为可点击的选项。 9. 运行 Ant Design Pro 项目,在菜单中点击选项,即可实现 Tab 页的切换功能。 以上步骤中,关键点是使用 react-router-dom 进行路由配置,并将 Tabs 组件与路由进行绑定。这样点击菜单选项时,路由会发生变化,Tabs 组件会显示对应的 Tab 页内容。另外,利用 Ant Design Pro 提供的 Tabs 组件和其属性,可以对选项卡的样式、布局、切换方式等进行自定义设置,以满足实际需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值