Vue?編程式路由導航的實現(xiàn)示例
router- link的replace屬性
1.作用:控制路由跳轉(zhuǎn)時操作瀏覽器歷史記錄的模式
2.瀏覽器的歷史記錄有兩種寫入方式:分別為push和replace,push是追加歷史記錄,replace是替換當前記錄。路由跳轉(zhuǎn)時候默認為push
3.如何開啟replace模式News
編程式路由導航
作用:不借助<router-link>
實現(xiàn)路由跳轉(zhuǎn),讓路由跳轉(zhuǎn)更加靈活
具體編碼:
/ /$router的兩個API this.$router.push({ name : 'xiangqing', params :{ id :xxx, title :xXX } }) this.$router.replace({ name : "xiangqing', params :{ id : xxX, title :xXX } }) this.$router.forward()//前進 this.$router.back()//后退 this.$router.go()//可前進也可后退
修改 Banner
<template> <div class="col-xs-offset-2 col-xs-8"> <div class="page-header"> <h2>Vue Router Demo</h2> <button @click="back">后退</button> <button @click="forward">前進</button> <button @click="test">測試一下 go</button> </div> </div> </template> <script> export default { name: "Banner", methods:{ back(){ this.$router.back() }, forward(){ this.$router.forward() }, test(){ this.$router.go(-3) } } } </script>
修改 Message
<!--跳轉(zhuǎn)路由并攜帶params參數(shù),to的對象寫法--> ...... <button @click="pushShow(m)">push查看</button> <button @click="replaceShow(m)">replace查看</button> <script> export default { ...... methods: { pushShow(m) { this.$router.push({ name: 'xiangqing', query: { id: m.id, title: m.title } }) }, replaceShow(m) { this.$router.replace({ name: 'xiangqing', query: { id: m.id, title: m.title } }) } } } </script>
緩存路由組件
作用:讓不展示的路由組件保持掛載,不被銷毀
具體編碼:
<keep-alive include="News"> <router-view></router-view> </keep-alive>
修改 News 組件,每個消息后展示輸入框
<template> <ul> <li>news001 <input/></li> <li>news002 <input/></li> <li>news003 <input/></li> </ul> </template>
當我們在后邊輸入框中輸入文字,切換到別的鏈接,再切回來,會發(fā)現(xiàn) input 內(nèi)的文字就清空了,因為我們之前說過,當 News 切換走的時候,它已經(jīng)被銷毀了,我們可以在 beforeDestroy
中打印測試,這里不做演示
想要緩存這個頁面,可以在 News 的最終展示區(qū) Home 中增加標簽router-view
,然后使用 include
標識要緩存的組件名
<keep-alive include="News"><router-view></router-view></keep-alive>
再看效果
注意:
1、include
后是組件名稱
2、不寫會緩存所有的
3、如果想緩存多個,可以寫成數(shù)組
:include="['News','Message']"
兩個新的生命鉤子
作用:路由組件所獨有的兩個鉤子,用于捕獲路由組件的激活狀態(tài)activated
路由組件被激活時觸發(fā)deactivated
路由組件失活時觸發(fā)
現(xiàn)在的需求是,我們希望在 News 組件周而復始的展示一個文字,之前我們寫過就是使用 setInterval
,然后在 beforeDestroy 中再銷毀這個 setInterval,但是由于我們上一節(jié)中,已經(jīng)把 News 設置了緩存,不會走 beforeDestroy 了,所以我們引入兩個新的生命周期鉤子
修改 News
<template> <ul> <li :style="{opacity}">歡迎學習Vue</li> <li>news001 <input/></li> <li>news002 <input/></li> <li>news003 <input/></li> </ul> </template> <script> export default { name: "News", data() { return { opacity: 1 } }, activated() { this.timer = setInterval(() => { this.opacity -= 0.01 if (this.opacity <= 0) this.opacity = 1 },16) }, deactivated() { clearInterval(this.timer); } } </script>
到此這篇關于Vue 編程式路由導航的實現(xiàn)示例的文章就介紹到這了,更多相關Vue 編程式路由導航內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
- 詳解Vue的鉤子函數(shù)(路由導航守衛(wèi)、keep-alive、生命周期鉤子)
- vue 路由守衛(wèi)(導航守衛(wèi))及其具體使用
- 使用vue-route 的 beforeEach 實現(xiàn)導航守衛(wèi)(路由跳轉(zhuǎn)前驗證登錄)功能
- 當vue路由變化時,改變導航欄的樣式方法
- vuejs 切換導航條高亮(路由菜單高亮)的方法示例
- 在vue中實現(xiàn)某一些路由頁面隱藏導航欄的功能操作
- vue2.0 實現(xiàn)導航守衛(wèi)的具體用法(路由守衛(wèi))
- vue 掛載路由到頭部導航的方法
- Vue-路由導航菜單欄的高亮設置方法
- vue使用vuex實現(xiàn)首頁導航切換不同路由的方法
- vue.js 底部導航欄 一級路由顯示 子路由不顯示的解決方法
相關文章
vue3+TS 實現(xiàn)自定義指令長按觸發(fā)綁定的函數(shù)
這篇文章主要介紹了vue3+TS實現(xiàn)自定義指令長按觸發(fā)綁定的函數(shù),文中給大家分享了編寫自定義指令時遇到的幾個難點,本文結合實例代碼給大家介紹的非常詳細,需要的朋友可以參考下2022-12-12vue項目登錄成功拿到令牌跳轉(zhuǎn)失敗401無登錄信息的解決
這篇文章主要介紹了vue項目登錄成功拿到令牌跳轉(zhuǎn)失敗401無登錄信息的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-02-02Vue.js 時間轉(zhuǎn)換代碼及時間戳轉(zhuǎn)時間字符串
這篇文章主要介紹了Vue.js 時間轉(zhuǎn)換代碼及時間戳轉(zhuǎn)時間字符串,需要的朋友可以參考下2018-10-10