Navigo JS路由器-重复的路由问题

时间:2018-08-12 20:41:02

标签: javascript ecmascript-6 single-page-application router es6-modules

不确定是什么问题,但是我的Navigo路由器正在复制路由。

路由器:

?:

问题

this.Navigo.hooks({
    before: (done, params) => {
        // some tomfoolery
        done();
    }
});

this.Navigo.on({
    '/:region/travel': (params) => {
        // import Travel module
        // some nonsense
    },
    '/:region/travel/car': (params) => {
        // import TravelCar module
        // some nonsense
    }
)};

this.Navigo.resolve();

导航到this.Navigo.navigate('/london/travel/car'); 也会触发/london/travel/car的路线,从而引起各种各样的麻烦。

这是标准行为吗?如果没有,那可能是什么问题?

我可以重写路线,以免它们冲突,例如/london/travel,但我真的不想避免。

更新1:

我尝试切换路线的顺序,但没有区别。为此,我声明了最长的/london/travel-by-car路径优先travel,最后是最小的/:region/travel/car

更新2:

我对这个问题的研究越多,我就越坚信Navigo无法实现这一目标。 Navigo不支持嵌套路由。如果有人可以确认我的路由实际上是“嵌套的”,那么我将使用一个支持它们的备用路由库。

1 个答案:

答案 0 :(得分:0)

我的代码有点不同,但按您预期的方式工作:

    var router = new Navigo("/");
var render = (content) => (document.querySelector("#app").innerHTML = content);

router
.on('/:id', ({ data }) => {
        setuserId(data.id)
        if (verifiedUser) {
            console.log("User verified");
        } else {
            console.log("User NOT verified");
        }
        rendertemplate(userDataURL(), "#landing-template", "#app")
    })
    .on('/:id/q', ({ data }) => {
        // Example - flaging a send with 's' from 'SMS', perhaps a diff flow?
        setuserId(data.id)
        rendertemplate(userDataURL(), "#landing-template", "#app")
        console.log("Source was a QRcode");
    })
    .on('/:id/q/t', ({ data }) => {
        // Example - flaging a send with 's' from 'SMS', perhaps a diff flow?
        setuserId(data.id)
        rendertemplate(userDataURL(), "#landing-template", "#app")
        console.log("Source was a QRcode in a Train");
    })

这将给我一个谨慎的“..已验证”/“来源是一个二维码”/“来源是火车中的二维码”console.log 响应。

B