最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

解決vue-router 嵌套路由沒(méi)反應(yīng)的問(wèn)題

 更新時(shí)間:2020年09月22日 09:55:09   作者:小蟲(chóng)1  
這篇文章主要介紹了解決vue-router 嵌套路由沒(méi)反應(yīng)的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

先看下route.js

//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

當(dāng)你訪問(wèn)的時(shí)候,發(fā)現(xiàn)

http://localhost:8080/#/login

http://localhost:8080/#/class

都正常,但是:

http://localhost:8080/#/course/list

http://localhost:8080/#/course/content

都是一片空白,檢查元素,發(fā)現(xiàn)沒(méi)有加載過(guò)來(lái)。檢查,子路由前面并沒(méi)有加/,所以這沒(méi)有問(wèn)題,排除。

其實(shí)這是list的父級(jí)course沒(méi)有component,有了componnet,并且需要在這個(gè)component理要有<router-view></router-view>,修改下:

{
path:'course',
component:Course
children:[{
path:'list',
component:CourseList
},{
path:'content',
component:CourseContent
}
]
},

Course.vue如下:

<template>
<div>
<router-view></router-view>
</div>
</template>

這樣就可以實(shí)現(xiàn)嵌套了。想想,本例子中,其實(shí)App組件也是這樣的,他提供了個(gè)<router-view></router-view>,對(duì)不對(duì)?

http://localhost:8080/#/course/list

http://localhost:8080/#/course/content

都可以訪問(wèn)了。

補(bǔ)充知識(shí):關(guān)于Vue-router子路由不顯示的一個(gè)坑

遇到這個(gè)問(wèn)題的基本上應(yīng)該跟我遇到的情況一樣,但是這個(gè)問(wèn)題很隱蔽,老手不會(huì)遇到,新人說(shuō)不清楚,所以爬坑之后來(lái)提一下。

父子路由是嵌套關(guān)系,所以不能跳過(guò)父組件直接顯示子組件。例如我有如下index.js:``

import Vue from 'vue'
import VueRouter from 'vue-router'

//引入兩個(gè)組件
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方式暴露出的模塊在導(dǎo)入時(shí)可以起任何名(不沖突的情況下)
export default router

在某個(gè)組件XXX.vue中,我想把recomView和recomEdit兩個(gè)組件導(dǎo)入,

<template>
……
<router-view></router-view>
……
</template>

<script>
……
this.$router.push('/recom/view')
this.$router.push('/recom/edit')
……
</script>

然而使用上面的index.js,會(huì)發(fā)現(xiàn)無(wú)論如何也無(wú)法引入。原因在于引入的時(shí)候跳級(jí)了?;仡^看上面index.js,不妥之處很多,慢慢分析一下

父級(jí)路由'/recom'沒(méi)有對(duì)應(yīng)的component,導(dǎo)致XXX.vue中的router-view沒(méi)有對(duì)應(yīng)的組件,所以此時(shí)頁(yè)面中你想顯示recomView或者recomEdit的地方會(huì)是空白

假如此時(shí)把'/recom'處添加component,為方便直接給component: recomView,會(huì)發(fā)現(xiàn)你原本指向recomView和recomEdit的兩個(gè)路由都會(huì)顯示recomView

那么問(wèn)題就清楚了,其實(shí)就是給的路由跳級(jí)了:父子路由是一個(gè)兩層的嵌套關(guān)系,而最上層組件中的router-view只會(huì)指向我們這里的父級(jí)路由,也就是'/recom',要想指向子路由,那就要再嵌套一層

到這里,解決方法就比較容易想到了,那就是再建立一個(gè)組件recom.vue對(duì)應(yīng)父級(jí)路由,在recom.vue中再引入一次router-view就行了。

//recom.vue,鑒于我這里并不需要這個(gè)'/recom'頁(yè)面,所以以最簡(jiǎn)單的方式引入router-view就可以了
<template>
 <router-view></router-view>
</template>

那還有沒(méi)有更簡(jiǎn)單的不需要建立recom.vue方法呢?有。

在index.js中直接引入const recom = {template: `<router-view></router-view>`}就行了。修正后的index.js應(yīng)該是這樣的:

import Vue from 'vue'
import VueRouter from 'vue-router'

//引入兩個(gè)組件
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

那還有沒(méi)有其他的辦法呢?也有。那就是不要用嵌套路由,直接把子路由升到跟父路由同級(jí)就行了,反正你這里又不需要父路由對(duì)應(yīng)的組件,然后給父路由設(shè)置一個(gè)redirect指向你想默認(rèn)顯示的頁(yè)面,這個(gè)相信都會(huì),就不寫了。這也是我一開(kāi)始想到的辦法,但是上面的bug沒(méi)解決心里不舒服,所以耽誤了點(diǎn)時(shí)間,不過(guò)還好,勉強(qiáng)算是找到原因了。

感覺(jué)JS是個(gè)很靈活的語(yǔ)言,像我這種半路出家什么書都沒(méi)看直接開(kāi)始做web的,真的要抽時(shí)間好好補(bǔ)補(bǔ)基礎(chǔ)了。

以上這篇解決vue-router 嵌套路由沒(méi)反應(yīng)的問(wèn)題就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Vue.js實(shí)現(xiàn)一個(gè)自定義分頁(yè)組件vue-paginaiton

    Vue.js實(shí)現(xiàn)一個(gè)自定義分頁(yè)組件vue-paginaiton

    這篇文章主要為大家詳細(xì)介紹了Vue.js實(shí)現(xiàn)一個(gè)自定義分頁(yè)組件vue-paginaiton的具體代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • Vue使用antd組件a-form-model實(shí)現(xiàn)數(shù)據(jù)連續(xù)添加功能

    Vue使用antd組件a-form-model實(shí)現(xiàn)數(shù)據(jù)連續(xù)添加功能

    這篇文章主要介紹了Vue使用antd組件a-form-model實(shí)現(xiàn)數(shù)據(jù)連續(xù)添加功能,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-12-12
  • 解決vue 更改計(jì)算屬性后select選中值不更改的問(wèn)題

    解決vue 更改計(jì)算屬性后select選中值不更改的問(wèn)題

    下面小編就為大家分享一篇解決vue 更改計(jì)算屬性后select選中值不更改的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-03-03
  • Vue響應(yīng)式添加、修改數(shù)組和對(duì)象的值

    Vue響應(yīng)式添加、修改數(shù)組和對(duì)象的值

    有些時(shí)候,不得不想添加、修改數(shù)組和對(duì)象的值,但是直接添加、修改后又失去了getter、setter,由于JavaScript的限制, Vue不能檢測(cè)以部分變動(dòng)的數(shù)組
    2017-03-03
  • 詳解Vue3框架的搭建及工程目錄

    詳解Vue3框架的搭建及工程目錄

    文章介紹了如何使用Node.js搭建Vue工程,并對(duì)Vue工程目錄進(jìn)行了詳細(xì)解讀,包括各種文件夾和文件的作用,此外,還講解了如何設(shè)置網(wǎng)頁(yè)標(biāo)題和全局樣式,以及如何配置路由,感興趣的朋友一起看看吧
    2025-03-03
  • 解決vue跨域axios異步通信問(wèn)題

    解決vue跨域axios異步通信問(wèn)題

    這篇文章主要介紹了解決vue跨域axios異步通信問(wèn)題,非常不錯(cuò),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下
    2019-04-04
  • Vue3響應(yīng)式高階用法之toRaw()的使用

    Vue3響應(yīng)式高階用法之toRaw()的使用

    在Vue3中,toRaw方法允許用戶獲取響應(yīng)式對(duì)象的原始值,有助于性能優(yōu)化和與外部庫(kù)集成,它通過(guò)繞過(guò)Vue的響應(yīng)式系統(tǒng),僅在必要時(shí)觸發(fā)更新,從而提升效率,本文就來(lái)具體介紹一下,感興趣的可以了解一下
    2024-09-09
  • vue音樂(lè)播放器插件vue-aplayer的配置及其使用實(shí)例詳解

    vue音樂(lè)播放器插件vue-aplayer的配置及其使用實(shí)例詳解

    本篇文章主要介紹了vue音樂(lè)播放器插件vue-aplayer的配置及其使用實(shí)例詳解,具有一定的參考價(jià)值,有興趣的可以了解一下
    2017-07-07
  • vue項(xiàng)目中定時(shí)器無(wú)法清除的原因解決

    vue項(xiàng)目中定時(shí)器無(wú)法清除的原因解決

    頁(yè)面有定時(shí)器,并且定時(shí)器在離開(kāi)頁(yè)面時(shí),有清除,本文主要介紹了vue項(xiàng)目中定時(shí)器無(wú)法清除的原因解決,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-02-02
  • vue-cli基礎(chǔ)配置及webpack配置修改的完整步驟

    vue-cli基礎(chǔ)配置及webpack配置修改的完整步驟

    這篇文章主要給大家介紹了關(guān)于vue-cli基礎(chǔ)配置及webpack配置修改的完整步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者使用vue-cli具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10

最新評(píng)論

舒城县| 尤溪县| 沙洋县| 桐庐县| 满城县| 通城县| 武宣县| 得荣县| 文安县| 安康市| 克山县| 武功县| 玉屏| 昌平区| 武功县| 棋牌| 包头市| 柘荣县| 宁津县| 泸溪县| 张家界市| 三江| 扬州市| 红安县| 肇东市| 崇信县| 罗平县| 泌阳县| 侯马市| 金川县| 略阳县| 正阳县| 湟中县| 绩溪县| 揭阳市| 儋州市| 大厂| 和林格尔县| 龙岩市| 九台市| 金平|