動態添加路由


動態添加路由遇到的問題

1,添加方法:

  // temp 里是動態的路由表

  router.options.routes = router.options.routes.concat(temp)
  
   // $addRoutes是自己實現的方法
  router.$addRoutes(router.options.routes)
  
  
   // 具體原因:在做路徑切換transitionTo方法中,首先就會使用const route = this.router.match(location, this.current)來匹配route, 其實內部會使用matcher來做匹配。修改了matcher即新的routes生效。 
  router.$addRoutes = (params) => {
    router.matcher = new Router({mode: 'history'}).matcher;
    router.addRoutes(params)
  }
2,添加時機:
  
router.beforeEach((to, from, next) => {
  if (to.path == '/login') {
    sessionStorage.removeItem('user');
  }
  let user = JSON.parse(sessionStorage.getItem('user'));
  if (to.path != '/login' && to.path != '/regist') {
    if(user){
      addTree()  // 添加一次
      setTimeout(next(),100)
    }else{
      next({ path: '/login' })
    }
  } else {
    next()
  }
})
 
3,刷新失效問題:
在App.vue 中添加鈎子 created 這樣每次刷新都會執行
在鈎子中重新添加路由


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM