国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Vue2-replace屬性、編程式路由導航、緩存路由組件、兩個新的生命周期鉤子、路由守衛(wèi)、路由器工作模式

這篇具有很好參考價值的文章主要介紹了Vue2-replace屬性、編程式路由導航、緩存路由組件、兩個新的生命周期鉤子、路由守衛(wèi)、路由器工作模式。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

??:如果事與愿違,那一定是上天另有安排

更多Vue知識請點擊——Vue.js

router-link的replace屬性

1.作用:控制路由跳轉(zhuǎn)時操作瀏覽器歷史記錄的模式
2.瀏覽器的歷史記錄有兩種寫入方式:分別為pushreplace,push是追加歷史記錄,replace是替換當前記錄。路由跳轉(zhuǎn)時候默認為push
3.如何開啟replace模式:<router-link replace .......>News</router-link>

  • 如果你用的是默認的push,你點擊進入到下一個路由的時候可以返回到上一個路由
  • 如果你用的是replace,你點擊進入到下一個路由的時候,瀏覽器左上角不會有返回上一步

編程式路由導航

1、什么是編程式路由導航

不借助<router-link> 實現(xiàn)路由跳轉(zhuǎn),讓路由跳轉(zhuǎn)更加靈活,主要是用$router的三個api push,replace,go(了解)來實現(xiàn)路由跳轉(zhuǎn),push是默認帶緩存,replace是覆蓋緩存

2、如何編碼

語法:

//$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() //可前進也可后退,5前進5步,-3后退3步

3、使用案例示例說明

不借助router-link,可以實現(xiàn)往哪里跳轉(zhuǎn),什么時候跳轉(zhuǎn)(加定時器)
Vue2-replace屬性、編程式路由導航、緩存路由組件、兩個新的生命周期鉤子、路由守衛(wèi)、路由器工作模式,Vue2+Vue3,vue.js,前端,javascript,前端框架,緩存

Vue2-replace屬性、編程式路由導航、緩存路由組件、兩個新的生命周期鉤子、路由守衛(wèi)、路由器工作模式,Vue2+Vue3,vue.js,前端,javascript,前端框架,緩存

緩存路由組件

作用:讓不展示的路由組件保持掛載,不被銷毀(比如切換時要保留表單數(shù)據(jù))。
使用:在放router-view標簽的地方,包邊包一個<keep-alive></keep-alive>,不加include默認這里邊的組件都保持掛載,加include后邊跟要掛載的組件名字

// 緩存一個路由組件用 字符串
<keep-alive include="News"> 
    <router-view></router-view>
</keep-alive>

 // 緩存多個路由組件用 數(shù)組 (使用 `v-bind`) 
<keep-alive :include="['News', 'Message']">
     <router-view></router-view>
</keep-alive>

注意:

  • 緩存里面的include里面的名字是組件名
  • 在需要被緩存組件的外側(cè)包裹keep-alive!不要去被緩存組件的template里邊包!

Vue2-replace屬性、編程式路由導航、緩存路由組件、兩個新的生命周期鉤子、路由守衛(wèi)、路由器工作模式,Vue2+Vue3,vue.js,前端,javascript,前端框架,緩存

如果像圖中<keep-alive include="News">這么寫的話,切換到MessageNews不會銷毀,但是從Message切換到News,Message會銷毀。

兩個新的生命周期鉤子

我們之前學習了生命周期以及八個生命周期鉤子——點此復習生命周期

現(xiàn)在我們再學習路由組件獨有的兩個鉤子,用于捕獲路由組件的激活狀態(tài)

還記得之前做的那個字體閃爍案例嗎?在這里再做一遍,寫在News組件里,循環(huán)變化透明度,但是你想離開這個選項卡時讓定時器停,就要走銷毀流程,但是News里面的input輸入框數(shù)據(jù)要保留,又不能被銷毀

這種情況就很尷尬了,如果想要實現(xiàn)組件出現(xiàn)時開啟定時器,組件切換時關閉定時器且保留數(shù)據(jù),就要使用兩個新的生命周期鉤子,是路由組件獨有的鉤子:

1、activated:路由組件被激活時觸發(fā)(從沒有出現(xiàn)在你面前–>組件出現(xiàn)在你眼前)。 相當于mounted
2、deactivated:路由組件失活時觸發(fā)。類似于beforeDestroy

<template>
  <ul>
    <li :style="{ opacity }">你好啊,小土豆</li>
    <li>news001 <input type="text" /></li>
    <li>news002 <input type="text" /></li>
    <li>news003 <input type="text" /></li>
  </ul>
</template>

<script>
export default {
  name: 'News',
  data() {
    return {
      a: false,
      opacity: 1,
    }
  },
  // mounted() {
  //   this.timer = setInterval(() => {
  //     this.opacity -= 0.01
  //     if (this.opacity <= 0) this.opacity = 1
  //   }, 16)
  // },
  // beforeDestroy() {
  // console.log('News組件即將被銷毀');
  //   clearInterval(this.timer)
  // },
  activated() {
    console.log('News組件被激活了')
    this.timer = setInterval(() => {
      this.opacity -= 0.01
      if (this.opacity <= 0) this.opacity = 1
    }, 16)
  },
  deactivated() {
    console.log('News組件失活了')
    clearInterval(this.timer)
  },
}
</script>

路由守衛(wèi)

作用:對路由進行權限控制(我想讓你看哪個,不想讓你看哪個)
分類:全局守衛(wèi)、獨享守衛(wèi)、組件內(nèi)守衛(wèi)

1、路由元信息

是配置路由規(guī)則時專門提供的一個容器meta,用來存放我們自定義的一些屬性。

Vue2-replace屬性、編程式路由導航、緩存路由組件、兩個新的生命周期鉤子、路由守衛(wèi)、路由器工作模式,Vue2+Vue3,vue.js,前端,javascript,前端框架,緩存
Vue2-replace屬性、編程式路由導航、緩存路由組件、兩個新的生命周期鉤子、路由守衛(wèi)、路由器工作模式,Vue2+Vue3,vue.js,前端,javascript,前端框架,緩存
Vue2-replace屬性、編程式路由導航、緩存路由組件、兩個新的生命周期鉤子、路由守衛(wèi)、路由器工作模式,Vue2+Vue3,vue.js,前端,javascript,前端框架,緩存

2、全局路由守衛(wèi)

(1)全局前置守衛(wèi)

全局前置守衛(wèi):初始化時執(zhí)行、每次路由切換前執(zhí)行
使用下面的api,有三個參數(shù),分別是to到哪里去,from從哪里來,next下一步(放行)

router.beforeEach((to,from,next)=>{ })

其中router是自定義的路由規(guī)則的名字const router = new VueRouter({})
比如我要設置只有本地存儲中school為potato的可以查看新聞和消息,那就要在前置路由守衛(wèi)中設置,如果符合條件,才能放行

//全局前置路由守衛(wèi)————初始化的時候被調(diào)用、每次路由切換之前被調(diào)用
router.beforeEach((from, to, next) => {
  console.log('前置路由守衛(wèi)', from, to)

  //判斷是否需要鑒權
  // if (to.path === '/home/news' || to.path === '/home/message')
  // if (to.name === 'xinwen' || to.name === 'xiaoxi')
  if (to.meta.isAuth) {
    if (localStorage.getItem('school') === 'potato') {
      next() //放行
    } else {
      alert('學校名不對,無權查看!')
    }
  } else {
    next()  //放行
  }
})
(2)全局后置守衛(wèi)

全局后置守衛(wèi):初始化時執(zhí)行、每次路由切換后執(zhí)行
使用下面的api,有兩個參數(shù),分別是to到哪里去,from從哪里來

注意后置守衛(wèi)沒有next

router.afterEach((to,from)=>{ })

比如我要設置不同的模塊顯示不同的網(wǎng)頁title,那么就要在等進入該模塊成功后再設置,也就是要設置在全局后置守衛(wèi)中

//全局后置路由守衛(wèi)————初始化的時候被調(diào)用、每次路由切換之后被調(diào)用
//注意:后置路由守衛(wèi)沒有next
router.afterEach((from, to) => {
  console.log('后置路由守衛(wèi)', from, to)
  document.title = to.meta.title || '土豆土豆'
})

3、獨享路由守衛(wèi)

獨享路由守衛(wèi):某一個路由單獨享用的守衛(wèi)
注意:獨享路由只有beforeEnter,沒有afterEnter,但可以配合全局后置守衛(wèi)使用。

獨享路由守衛(wèi)的寫法和全局路由守衛(wèi)的一樣,但是要寫在指定的路由配置中。

Vue2-replace屬性、編程式路由導航、緩存路由組件、兩個新的生命周期鉤子、路由守衛(wèi)、路由器工作模式,Vue2+Vue3,vue.js,前端,javascript,前端框架,緩存

這樣配置了之后,查看新聞模塊時就會校驗權限。

4、組件內(nèi)路由守衛(wèi)

組件內(nèi)路由守衛(wèi):在組件內(nèi)寫路由守衛(wèi),該組件獨有的路由守衛(wèi)。

(1)進入組件時

beforeRouteEnter(to,from,next){}必須通過路由規(guī)則進入,寫組件標簽進入不行,而且是進入路由組件時調(diào)用(相當于前置路由守衛(wèi)),to為當前組件

(2)離開組件時

beforeRouteLeave(to,from,next)得觸發(fā)路徑的變化,前端瀏覽器檢測到了才允許離開, 離開組件時調(diào)用這個函數(shù),在后置路由守衛(wèi)之后。

(3)給About組件添加一個路由守衛(wèi)
<template>
  <h2>我是About</h2>
</template>

<script>
export default {
  name: 'About',
  //通過路由規(guī)則,進入該組件時被調(diào)用
  beforeRouteEnter(to, from, next) {
    console.log('About--beforeRouteEnter')
    if (to.meta.isAuth) {
      if (localStorage.getItem('school') === 'potato') {
        next()  //放行
      } else {
        alert('學校名不對,無權查看!')
      }
    } else {
      next()  //放行
    }
  },
  //通過路由規(guī)則,離開該組件時被調(diào)用
  beforeRouteLeave(to, from, next) {
    console.log('About--beforeRouteLeave')
    next()  //放行
  },
}
</script>

5、組件從前置路由守衛(wèi)到失活的執(zhí)行流程

1.全局前置路由守衛(wèi) => 2.組件內(nèi)路由守衛(wèi)beforeRouteEnter => 3.全局后置路由守衛(wèi) => 4.mounted掛載組件 => 5.activated激活 => 6.組件內(nèi)路由守衛(wèi)beforeRouteLeave => 7.deactivated失活

路由器的兩種工作模式

1、hash模式

對于一個url來說,什么是hash值?——”#“以及后面的內(nèi)容就是hash值。

比如一個url為:

localhost:8080/#/home/message/detail

一般出現(xiàn)了”#“就知道這是hash模式,但是hash值不會包含在HTTP請求中,也就是說:hash值不會帶給服務器。

特點:

  1. 地址中永遠帶著#號,不美觀 。

  2. 若以后將地址通過第三方手機app分享,若app校驗嚴格,則地址會被標記為不合法。

  3. 兼容性較好。

2、history模式

localhost:8080/home/message/detail

特點:

1、地址干凈,美觀 。
2、兼容性和hash模式相比略差。
3、應用部署上線時需要后端人員支持,解決刷新頁面服務端404的問題。

注意:路由器的默認工作模式是hash模式

如果想改的話,去創(chuàng)建路由規(guī)則的地方更改mode屬性:

Vue2-replace屬性、編程式路由導航、緩存路由組件、兩個新的生命周期鉤子、路由守衛(wèi)、路由器工作模式,Vue2+Vue3,vue.js,前端,javascript,前端框架,緩存

3、解決history刷新報錯問題

后端安裝中間件connect-history-api-fallback
這個插件可以幫助分辨是前端路由還是后端請求,從而避免報錯

Vue2-replace屬性、編程式路由導航、緩存路由組件、兩個新的生命周期鉤子、路由守衛(wèi)、路由器工作模式,Vue2+Vue3,vue.js,前端,javascript,前端框架,緩存文章來源地址http://www.zghlxwxcb.cn/news/detail-687258.html

到了這里,關于Vue2-replace屬性、編程式路由導航、緩存路由組件、兩個新的生命周期鉤子、路由守衛(wèi)、路由器工作模式的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • Vue路由導航(replace、push、forward、back、go)

    Vue路由導航(replace、push、forward、back、go)

    棧的數(shù)據(jù)結(jié)構:先進后出,后進先出。 原理:push將元素壓入棧內(nèi),pop將元素彈出,棧有分別有棧底指針和棧頂指針,指向棧內(nèi)最低和最高的元素。 瀏覽器中的前進和后退的按鈕也是使用了棧的數(shù)據(jù)結(jié)構實現(xiàn),但也有不同。對于瀏覽器而言,分別有兩種屬性: push屬性(推進

    2024年02月06日
    瀏覽(26)
  • 路由緩存問題 | vue-router的導航守衛(wèi)

    路由緩存問題 | vue-router的導航守衛(wèi)

    ???????? 帶參路由,當 參數(shù)發(fā)生變化時,相同的組件實例將被復用 ,組件的 生命周期鉤子不會被調(diào)用, 導致 請求不會被重新發(fā)送, 以至于 數(shù)據(jù)無法更新 。 兩種解決方法: 1. 給 RouterView綁定key值 ,即 特點:不復用,破壞組件緩存,強制執(zhí)行,存在一定的 浪費 ,即

    2024年02月09日
    瀏覽(30)
  • Vue路由組件的緩存keep-alive和include屬性

    功能:瀏覽器頁面在進行切換時,原有的路由組件會被銷毀。通過緩存可以保存被切換的路由組件。 例子:在頁面上填好的信息當進行頁面切換再轉(zhuǎn)回原來的頁面時,原本信息被清空了需要重新填寫 功能:切換路由時,保留被切換路由組件。 格式: keep-alive router-view/ keep-

    2024年02月06日
    瀏覽(24)
  • React Router 中的路由導航方法:push() 和 replace() 詳解

    在 React Router 中, this.props.history.push() 和 this.props.history.replace() 是用于編程式導航的兩個常用方法。它們允許我們在組件中動態(tài)地更改路由,并可選地傳遞狀態(tài)參數(shù)。本文將介紹這兩個方法的用法和區(qū)別。 push() 方法將在導航時創(chuàng)建一個新的歷史記錄條目,并將用戶重定向到新

    2024年03月15日
    瀏覽(28)
  • vue2實現(xiàn)自定義主題webpack-theme-color-replacer

    vue2實現(xiàn)自定義主題webpack-theme-color-replacer

    需求:根據(jù)element的自定義主題色,之后改變element的全局所有顏色,解決頁面刷新后主題色失效問題,這個需要把顏色存入到瀏覽器的存儲中,如果換個瀏覽器就得重新選擇了哈,如果需要在不同的瀏覽器保持一致的主題,需要跟后端溝通 之前還寫過一個簡單的,有需要的可

    2024年02月07日
    瀏覽(30)
  • Vue2-導航守衛(wèi)

    在Vue中,導航守衛(wèi)是一組用于控制路由導航的鉤子函數(shù)。這些鉤子函數(shù)允許你在路由導航的不同階段執(zhí)行一些操作,比如在路由切換之前進行驗證、處理路由變化等。 Vue提供了三種類型的導航守衛(wèi): 全局前置守衛(wèi) :在路由切換之前執(zhí)行,適用于整個應用的路由。 路由獨享的

    2024年01月23日
    瀏覽(19)
  • 微信小程序開發(fā)學習之頁面導航(聲明式導航和編程式導航)

    微信小程序開發(fā)學習之頁面導航(聲明式導航和編程式導航)

    頁面導航指的是頁面之間的相互跳轉(zhuǎn)。 小程序中實現(xiàn)頁面導航的兩種方式: 聲明式導航 ● 在頁面上聲明一個 navigator 導航組件 ● 通過點擊 navigator 組件來實現(xiàn)頁面的跳轉(zhuǎn) 編程式導航 ● 調(diào)用小程序的導航API,實現(xiàn)頁面的跳轉(zhuǎn) 1.1.1. 導航到tabBar頁面 tabBar 頁面指的是被配置為

    2024年02月15日
    瀏覽(17)
  • vue2+element-ui實現(xiàn)側(cè)邊導航欄

    編寫 client/src/components/LeftMenu.vue ,創(chuàng)建側(cè)邊導航欄: 編輯 client/src/views/Index.vue ,引入側(cè)邊導航欄:

    2024年02月02日
    瀏覽(30)
  • Vue2中給對象添加新屬性界面不刷新

    Vue2中給對象添加新屬性界面不刷新

    Vue2.x的響應式 實現(xiàn)原理 對象類型:通過 Object.defineProperty() 對屬性的讀取、修改進行攔截(數(shù)據(jù)劫持)。 數(shù)組類型:通過重寫更新數(shù)組的一系列方法來實現(xiàn)攔截。(對數(shù)組的變更方法進行了包裹)。 存在問題 新增 屬性、 刪除 屬性, 界面不會更新。 直接通過 下標修改 數(shù)組

    2024年02月07日
    瀏覽(18)
  • Vue2(生命周期,列表排序,計算屬性和監(jiān)聽器)

    Vue2(生命周期,列表排序,計算屬性和監(jiān)聽器)

    前言 上一章博客我們講解了Vue基礎 這一章我們來講Vue生命周期,列表過濾,計算屬性和監(jiān)聽器 一,生命周期 通常也叫生命周期回調(diào)函數(shù)、生命周期函數(shù)、生命周期鉤子 vue初始化時在不同的階段調(diào)用的不同函數(shù) 生命周期函數(shù)的 this 指向為vue實例,名字不能更改 1.1,生命周期函

    2024年02月13日
    瀏覽(49)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包