Vue中router-view和component :is的區(qū)別解析
他們的作用都是可以更換組件的顯示
router-view
router-view是vueRouter的組件,主要是更新路由,可以不用跳轉(zhuǎn)到一個(gè)新的頁(yè)面,不會(huì)更新初始化函數(shù)mounted和created,只更新<router-view></router-view>標(biāo)簽下所渲染的組件??梢圆挥靡虢M件。
缺點(diǎn)
一個(gè)頁(yè)面一個(gè)路由,跳轉(zhuǎn)要寫(xiě)路由地址,更新tab樣式要傳參數(shù)
component :is=" "
component :is這個(gè)是vue的組件,is=要渲染的組件,不會(huì)更新路由,不會(huì)更新初始化函數(shù)mounted和created。刷新頁(yè)面后會(huì)跳回默認(rèn)顯示頁(yè)面;
缺點(diǎn)
需要引入所有要顯示的組件,并且components:{聲明},
router-view用法
直接填寫(xiě)跳轉(zhuǎn)路由,路由組件會(huì)渲染<router-view></router-view>標(biāo)簽
//index.vue <div class="searchNav"> <router-link to="/a" >a</router-link> <router-link to="/b" >b</router-link> <router-view /> </div> //a.vue <template> <div> 這是a文件 </div> <template> //b.vue <template> <div> 這是b文件 </div> <template>
//router.js { path: '/index', name: 'index', component:() => import('index.vue'), redirect: '/a', //重定向到/a children: [ { path: '/a', name: 'a', component:() => import('a.vue'), }, { path: '/b', name: 'b', component:() => import('b.vue'), }, }
component :is=" "用法
用法很簡(jiǎn)單,is=要渲染的組件,必須引用和聲明
在標(biāo)簽頁(yè)的使用場(chǎng)景中用動(dòng)態(tài)組件和路由的區(qū)別是什么呢
沒(méi)什么不同吧,都是動(dòng)態(tài)渲染組件,只是路由封裝了url與展示的組件的關(guān)系,并可以切換任意多級(jí)抄組件,你用動(dòng)態(tài)組件做的話肯定特別麻煩。
所以動(dòng)態(tài)組件適用于一個(gè)頁(yè)面上某個(gè)區(qū)域的切zhidao換,路由適用于同時(shí)切換頁(yè)面以及多個(gè)層級(jí)的組件
這個(gè)需要根據(jù)具體的業(yè)務(wù)需求來(lái)。
路由的改變百是根據(jù)URL的狀態(tài)改變而改變,所以要改變路由視圖必須要對(duì)應(yīng)URL的改變。并且路由的頁(yè)面必須要現(xiàn)在Routes里注冊(cè),雖然后面提供了動(dòng)態(tài)的注冊(cè)router.addRouts()
而動(dòng)態(tài)組件<component :is="componentA" :prop="prop"> 僅僅是綁定了變化的度組件,當(dāng)然這些組件也必須在它們的父組件里注冊(cè),也可以采用相同的方式進(jìn)行傳參與事件,頁(yè)面問(wèn)URL不需要發(fā)生改變。并且相對(duì)路由頁(yè)面更加靈活,可以根據(jù)自己的需要發(fā)生改變。
舉個(gè)栗子
在我以前寫(xiě)的一個(gè)項(xiàng)目中,設(shè)計(jì)到echarts的多個(gè)圖表變換,如果要用路由頁(yè)面,則答需要重復(fù)配置多條規(guī)則,而使用動(dòng)態(tài)組件,一個(gè)頁(yè)面內(nèi)就能搞定。并且能夠傳遞一些參數(shù)給這些子組件
到此這篇關(guān)于Vue中router-view和component :is的區(qū)別的文章就介紹到這了,更多相關(guān)router-view和component :is區(qū)別內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
一次前端Vue項(xiàng)目國(guó)際化解決方案的實(shí)戰(zhàn)記錄
這篇文章主要給大家介紹了關(guān)于前端Vue項(xiàng)目國(guó)際化解決方案的實(shí)戰(zhàn)記錄,以上只是一部分Vue項(xiàng)目開(kāi)發(fā)中遇到的典型問(wèn)題和解決方案,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-07-07Vue數(shù)組響應(yīng)式操作及高階函數(shù)使用代碼詳解
這篇文章主要介紹了Vue數(shù)組響應(yīng)式操作及高階函數(shù)使用代碼詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08vue中動(dòng)態(tài)修改animation效果無(wú)效問(wèn)題詳情
這篇文章主要介紹了vue中動(dòng)態(tài)修改animation效果無(wú)效問(wèn)題詳情,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-06-06將vue+nodejs項(xiàng)目部署到服務(wù)器上的實(shí)現(xiàn)
本文主要介紹了將vue+nodejs項(xiàng)目部署到服務(wù)器上的實(shí)現(xiàn),使用Express生成器部署和前端Vue項(xiàng)目部署,具有一定的參考價(jià)值,感興趣的可以了解一下2025-03-03vscode 配置vue+vetur+eslint+prettier自動(dòng)格式化功能
這篇文章主要介紹了vscode 配置vue+vetur+eslint+prettier自動(dòng)格式化功能,本文通過(guò)實(shí)例代碼圖文的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-03-03使用Vue3優(yōu)雅地實(shí)現(xiàn)表格拖動(dòng)排序
在?Vue.js?中主要通過(guò)第三方庫(kù)實(shí)現(xiàn)表格拖動(dòng)排序功能,其中最常用的庫(kù)是?SortableJS,下面我們就來(lái)看看如何使用SortableJS實(shí)現(xiàn)表格拖動(dòng)排序吧2025-01-01Vue+elementUI?el-input輸入框手機(jī)號(hào)校驗(yàn)功能
這篇文章主要介紹了Vue+elementUI?el-input輸入框手機(jī)號(hào)校驗(yàn)功能,限制input框內(nèi)只能輸入數(shù)字,且為11位,通過(guò)實(shí)例代碼介紹了對(duì)輸入手機(jī)號(hào)做校驗(yàn)的方法,感興趣的朋友跟隨小編一起看看吧2023-10-10基于Vue2實(shí)現(xiàn)動(dòng)態(tài)折扣表格
這篇文章主要為大家詳細(xì)介紹了如何基于Vue2實(shí)現(xiàn)動(dòng)態(tài)折扣表格,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-01-01