请教这个react多标签怎么实现的

代码在这里react-ant,基于ant-design-pro的项目,在其基础上添加多标签功能,我看了半天代码,主要的疑问是他是如何利用react-router-dom实现在url切换后,还能保证其他Route不会销毁的,作者好像不怎么想分享原理,希望有看懂的老司机指点下

阅读 3.3k
2 个回答

找到原理了,不知道作者是刻意为之还是本来就是错误的代码歪打正着了

  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;
  };

<Route key={item.key} path={item.path} component={item.content} exact={item.exact} />

主要是这里,作者给Routepath字段指定了一个不存在的值(item.path始终为undefined),也就相当于Route始终输出,不用匹配当前url,也就是这里用不用Route都无所谓了,只要输出item.content就行了
<Route key={item.key} path={item.path} component={item.content} exact={item.exact} />

看了一下,好像没你说的这样使用 react-router-dom 做路由级的缓存功能。直接用 Tabs 进行的页面管理了

图片描述

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题