【问题标题】:Can't switchPath 404s, fails to capture wildcard routeCan't switchPath 404s, 无法捕获通配符路由
【发布时间】:2018-08-30 14:19:08
【问题描述】:

将其输入 switchPath

  const Routes = {
    "/": Home,
    "/login": Login,
    '*': function(){return {DOM: xs.of(<h1> 404</h1>)}}
  }

导航到/lossgin 将记录当前路线/路径是“/”。

【问题讨论】:

    标签: url-routing cyclejs switch-path


    【解决方案1】:

    这似乎是switch-path 的问题。 (和CycleJS history无关)

    查看此开关路径issue 和此pull request

    简单地说,当使用路由“/”并且没有嵌套路由时,不会捕获通配符 *。例如:

    const { path, value } = switchPath("/lossgin", {
      "/": 123,
      "/login": 456,
      "*": 789
    });
    

    console.log(path, value) 产生:

    / 123
    

    解决方法是将您的 login 路由更改为嵌套路由:

    const { path, value } = switchPath("/lossgin", {
      "/": 123,
      "/login": {"/": 456}, // <-- nested route
      "*": 789
    });
    

    console.log(path, value) 产生:

    /lossgin 789
    

    See code example here.

    【讨论】:

    • 嵌套路由必须保持在对象的最底部,否则它下面的所有内容都将成为通配符。
    • @janat08 额外的指定路由,如/home需要按顺序出现在嵌套路由之前,但root,/可以列在嵌套路由之后。
    猜你喜欢
    • 1970-01-01
    • 2020-12-11
    • 1970-01-01
    • 1970-01-01
    • 2012-04-27
    • 2015-08-24
    • 2017-07-17
    • 1970-01-01
    • 2016-11-11
    相关资源
    最近更新 更多