Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 动态vue路由器-输入前-使用next()时无限循环_Javascript_Vue.js_Routing_Vue Router - Fatal编程技术网

Javascript 动态vue路由器-输入前-使用next()时无限循环

Javascript 动态vue路由器-输入前-使用next()时无限循环,javascript,vue.js,routing,vue-router,Javascript,Vue.js,Routing,Vue Router,我正在尝试创建一个SPA,展示奥地利每个州的经销商。例如,如果用户访问example.com/vienna,它会显示维也纳的每个经销商。但是如果用户访问example.com/paris,他仍然会被引导到动态路线/paris,但当然不会显示任何内容 因此,我的方法是检查用户想要搜索的状态是否在状态列表中可用,从而将其指向可用状态或将其重定向到404页面 如果状态是可用的,它就可以工作,但是如果我试图转到一个不存在的状态,我就会陷入next('/404') 我做错了什么,或者有更好的方法解决我的问

我正在尝试创建一个SPA,展示奥地利每个州的经销商。例如,如果用户访问
example.com/vienna
,它会显示维也纳的每个经销商。但是如果用户访问
example.com/paris
,他仍然会被引导到动态路线/paris,但当然不会显示任何内容

因此,我的方法是检查用户想要搜索的状态是否在状态列表中可用,从而将其指向可用状态或将其重定向到404页面

如果状态是可用的,它就可以工作,但是如果我试图转到一个不存在的状态,我就会陷入
next('/404')


我做错了什么,或者有更好的方法解决我的问题吗?

/404
/:region

您需要更改路径顺序

export default new Router({
  routes: [{
      path: '/',
      name: 'Home',
      component: Home
    },
    {
      path: '/404',
      name: '404',
      component: NotFound
    },{
      path: '/:region',
      component: RegionQuery,
      beforeEnter: (to, from, next) => {

        let isRegion = false;
        let allRegions = storeConfig.state.states;
        let toRegion = to.params.region;

        for(var i in allRegions){
          if(allRegions[i].route === toRegion){
            isRegion = true;
          }
        }

        if (isRegion) {
          next();
        } else {
          next('/404');
        }
      }
    },
    {
      path: '*',
      redirect: '/404'
    },
  ]
export default new Router({
  routes: [{
      path: '/',
      name: 'Home',
      component: Home
    },
    {
      path: '/404',
      name: '404',
      component: NotFound
    },{
      path: '/:region',
      component: RegionQuery,
      beforeEnter: (to, from, next) => {

        let isRegion = false;
        let allRegions = storeConfig.state.states;
        let toRegion = to.params.region;

        for(var i in allRegions){
          if(allRegions[i].route === toRegion){
            isRegion = true;
          }
        }

        if (isRegion) {
          next();
        } else {
          next('/404');
        }
      }
    },
    {
      path: '*',
      redirect: '/404'
    },
  ]