zhangyuang / ssr

A most advanced ssr framework support React17/React18/Vue2/Vue3 on Earth that implemented serverless-side render specification.
http://doc.ssr-fc.com/
MIT License
2.61k stars 284 forks source link

关于框架支持嵌套路由的问题 #102

Closed zcgzxg closed 2 years ago

zcgzxg commented 3 years ago

详细描述你的问题

目前框架未支持嵌套路由,在开发项目中发现如果设定了嵌套路由,则框架未能match到子路由

期望的结果

嵌套路由的fetch也可正常执行

当前使用的版本

5.6.4

复现仓库地址

你本人对问题可能的原因判断(如果你能大概判断的话)

可以尝试修改findRoute方法的执行逻辑,以解决此问题

  function findRoute<T extends {path: string; children?:T[]}> (Routes: T[], path: string): T {
    // 递归查找路由,以匹配路由和子路由
    const recurseFind = (route: T) => {
          if (matchPath(path, route) && matchPath(path, route).isExact) {
              return true
          } else if (route.children) {
              return route.children.some(subRoute => recurseFind({
                  ...subRoute,
                  path: route.path + '/' + subRoute.path
              }))
          }
      }

    // 根据请求的path来匹配到对应的Component
    const route = Routes.find(recurseFind)
    return route
  }
Yangfan2016 commented 2 years ago

react-router-config 的 matchRoutes 可以支持嵌套理由查询,不过 他不支持 相对路径,需要自己处理一下