vue-router 플러그인 루트가 반응하지 않는 문제를 해결하다
5757 단어 vue-router중첩경로
//route.js
const App = () => import('../App.vue');
const Login = () => import('../component/Login.vue');
const Class = () => import('../component/Class.vue');
const CourseList = () => import('../component/CourseList.vue');
const CourseContent = () => import('../component/CourseContent.vue');
const routers = [{
path:'/',
component:App,
children:[{
path:'login',
component:Login
},{
path:'class',
component:Class
},
{
path:'course',
children:[{
path:'list',
component:CourseList
},{
path:'content',
component:CourseContent
}
]
},
]
}]
export default routers
네가 방문했을 때, 발견http://localhost:8080/#/login
http://localhost:8080/#/class
모두 정상입니다. 하지만:
http://localhost:8080/#/course/list
http://localhost:8080/#/course/content
모두 공백이어서 원소를 검사했는데 불러오지 않았습니다.검사, 하위 루트 앞에 추가/가 없기 때문에 이것은 문제없습니다. 배제합니다.
사실 이것은list의 부급 코스에component가 없고 componnet이 있으며 이 component에는
{
path:'course',
component:Course
children:[{
path:'list',
component:CourseList
},{
path:'content',
component:CourseContent
}
]
},
Course.vue는 다음과 같습니다.
<template>
<div>
<router-view></router-view>
</div>
</template>
이렇게 하면 끼워넣기를 실현할 수 있다.생각해 보면 본 예에서 사실 앱 구성 요소도 이렇다. 그는 http://localhost:8080/#/course/list
http://localhost:8080/#/course/content
다 방문할 수 있어요.
보충 지식: Vue-router 하위 루트가 표시되지 않는 구덩이
이 문제에 부딪히는 것은 기본적으로 내가 직면한 상황과 같아야 하지만 이 문제는 매우 은밀하고 베테랑은 만나지 못하며 신인은 분명하게 말할 수 없기 때문에 구덩이를 기어오른 후에 제기해야 한다.
부자 라우팅은 중첩된 관계이므로 상위 어셈블리를 건너뛰고 직접 서브어셈블리를 표시할 수 없습니다.예를 들어 나는 다음과 같은 index가 있다.js:``
import Vue from 'vue'
import VueRouter from 'vue-router'
//
import recomView from '../components/views/ty/recom/view.vue'
import recomEdit from '../components/views/ty/recom/edit.vue'
Vue.use(VueRouter)
// router
const router = new VueRouter({
mode: 'history',
routes: [
{
path: '/recom',
children: [
{
path: 'view',
name: 'recomView',
component: recomView
},
{
path: 'edit',
name: 'recomEdit',
component: recomEdit
}
]
},
// router,export default ( )
export default router
어셈블리에서 XXX.vue에서 recomView와 recomEdit 두 구성 요소를 가져오고 싶습니다.
<template>
……
<router-view></router-view>
……
</template>
<script>
……
this.$router.push('/recom/view')
this.$router.push('/recom/edit')
……
</script>
하지만 위의 index를 사용합니다.js, 도저히 도입할 수 없다는 것을 발견할 수 있습니다.도입할 때 등급을 뛰어넘었기 때문이다.고개를 돌려 위의 index를 보세요.js, 타당하지 않은 점이 많으니 천천히 분석해 보세요부모 루트'/recom'에 대응하는 component가 없어서 XXX가 발생합니다.vue의router-view는 대응하는 구성 요소가 없기 때문에 이 페이지에서 RecomView나 RecomEdit를 표시하려는 곳은 공백입니다.
만약에 이 때에'/recom'에 component를 추가하면,component:recomView에 직접 편리하도록,recomView와 recomEdit를 가리키는 두 가지 루트가 모두 recomView를 표시합니다.
그러면 문제는 명백히 알 수 있다. 사실은 주어진 루트가 등급을 뛰어넘는 것이다. 부자 루트는 두 층의 끼워 넣는 관계이고 최상위 구성 요소 중의router-view는 이곳의 부급 루트, 즉'/recom'만 가리킨다. 하위 루트를 가리키려면 한 층을 더 끼워야 한다.
여기까지 와서 해결 방법은 비교적 쉽게 생각할 수 있다. 그것은 바로 구성 요소를 다시 만드는 것이다.vue는 부모 루트에 대응합니다.recom에 있습니다.vue에router-view를 한 번 더 도입하면 됩니다.
//recom.vue, '/recom' , router-view
<template>
<router-view></router-view>
</template>
그것은 더 간단한 것이 있습니까? Recom을 만들 필요가 없습니다.vue 방법은요?있다.인덱스에서js에서 constrecom = {template:'
import Vue from 'vue'
import VueRouter from 'vue-router'
//
import recomView from '../components/views/ty/recom/view.vue'
import recomEdit from '../components/views/ty/recom/edit.vue'
Vue.use(VueRouter)
// recom !
const recom = {
template: `<router-view></router-view>`
}
// router
const router = new VueRouter({
mode: 'history',
routes: [
{
path: '/recom',
component: recom, // recom,
children: [
{
path: 'view',
name: 'recomView',
component: recomView
},
{
path: 'edit',
name: 'recomEdit',
component: recomEdit
}
]
},
export default router
그럼 다른 방법이 없을까요?있다.그것은 플러그인 루트를 사용하지 말고 하위 루트를 아버지 루트와 동급으로 올리면 된다는 것이다. 어쨌든 아버지 루트에 대응하는 구성 요소가 필요하지 않다. 그리고 아버지 루트에 당신이 기본적으로 표시하고 싶은 페이지를 가리키는redirect를 설정하면 이 믿음은 모두 쓰지 않을 것이다.이것도 내가 처음에 생각한 방법이지만, 위의 버그가 해결되지 않아서 마음이 불편해서 시간을 좀 지체했지만, 다행히 겨우 원인을 찾은 셈이다.JS는 매우 유연한 언어인 것 같아요. 저처럼 도중에 출가하여 아무 책도 보지 않고 웹을 하기 시작했어요. 정말 시간을 내서 기초를 잘 보충해야 해요.
이상에서 vue-router 플러그인 루트의 반응이 없는 문제를 해결한 것은 바로 편집자가 여러분에게 공유한 모든 내용입니다. 여러분께 참고가 되고 저희를 많이 사랑해 주시기 바랍니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
【Vue.js】컴포넌트의 3개의 네비게이션 가드일에서 사용하게 되었기 때문에 1부터 Vue.js에 대해 배웠다. 그 이름에서 알 수 있듯이 무언가를 가드하기위한 처리로, 대체로 페이지 천이 전에 특정 처리를 실행시켜 페이지 천이시키지 않게 한다. Vue.js의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.