본문 바로가기
프로그램/Vue

router 설정

by cbwstar 2021. 9. 1.
728x90
반응형

화면에서 메뉴 클릭시 라우터를 거쳐서 해당 페이지를 호출한다.

import Vue from 'vue'
import Router from 'vue-router'
import axios from 'axios'

Vue.use(Router)

Vue.prototype.$axios = axios
const apiRootPath = process.env.NODE_ENV === 'production' ? '/rice/' : '/rice/'
Vue.prototype.$apiRootPath = apiRootPath
axios.defaults.baseURL = apiRootPath

const originalPush = Router.prototype.push

Router.prototype.push = function push (location) {
  return originalPush.call(this, location).catch(err => {
    if (err.name !== 'NavigationDuplicated') throw err
  })
}

export default new Router({
  // mode: 'history',
  base: process.env.BASE_URL,
  routes: [
    {
      path: '/',
      name: 'dashboard',
      component: () => import('../views/dashboard')
    },
    {
      path: '/login',
      name: 'login',
      component: () => import('../views/login')
    },
    {
      path: '/menu1',
      name: 'menu1',
      component: () => import('../views/menu1')
    },
    {
      path: '/menu2',
      name: 'menu2',
      component: () => import('../views/menu2')
    },
    {
      path: '/menu3',
      name: 'menu3',
      component: () => import('../views/menu3')
    },
    {
      path: '/detail/:id?',
      name: 'detail',
      component: () => import('../views/detail')
    },

    {
      path: '*',
      name: 'e404',
      component: () => import('../views/e404')
    }
  ]
})

const originalPush = Router.prototype.push

 

Router.prototype.push = function push (location) {

  return originalPush.call(thislocation).catch(err => {

    if (err.name !== 'NavigationDuplicated'throw err

  })

}

이 부분을 작성하지 않으면 똑같은 url을 호출시 이미 페이지가 열려 있어서 오류 메세지가 발생한다. 열려 있는지 중복체크를 넣어 줘야 에러가 없이 처리 된다.

728x90
반응형

'프로그램 > Vue' 카테고리의 다른 글

vue 개발환경 설정하기  (0) 2021.09.02
store 저장소 처리  (0) 2021.09.01
로그인시 rsa 암호화 적용하기  (0) 2021.09.01
vue에서 rsa암호화 하여 자바와 통신하기  (1) 2021.09.01
vue 폴더구조  (0) 2021.09.01

댓글



"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."

loading