欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解刷新頁面vuex數(shù)據(jù)不消失和不跳轉(zhuǎn)頁面的解決

 更新時(shí)間:2018年01月30日 11:43:17   作者:青棘  
這篇文章主要介紹了詳解刷新頁面vuex數(shù)據(jù)不消失和不跳轉(zhuǎn)頁面的解決,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

先說點(diǎn)什么

vuex和路由攔截這一塊搗鼓的有一段時(shí)間了,總算是爬出來了,特地來分享一下,首先聲明沒有什么基礎(chǔ)介紹,用的是登錄狀態(tài)存儲sessionStorage的方法!!!

進(jìn)入正題

刷新

刷新相當(dāng)與重啟項(xiàng)目,之前獲取到的數(shù)據(jù)也只是通過store暫存起來,項(xiàng)目關(guān)閉時(shí)就不見了,這有些像電腦重啟,存儲在RAM的數(shù)據(jù)會消失。但是儲存在sessionstorage、localstorage和cookie里的內(nèi)容不會消失.

Vuex

方法思路

首先得熟悉vuex,官網(wǎng)中介紹 Vuex 是一個(gè)專為 Vue.js 應(yīng)用程序開發(fā)的狀態(tài)管理模式,也就是說vuex中的store中的數(shù)據(jù)都是臨時(shí)的,都是一些變量,頁面刷新重新加載,所有都清空,并且已經(jīng)在頁面中沒有進(jìn)行二次登陸,vuex中就一直是空的,所以就分生出了幾個(gè)方法

1.因?yàn)閟essionstorage(關(guān)閉頁面會消失)、localstorage和cookie刷新頁面數(shù)據(jù)不會消失,所以可以把所有請求到的數(shù)據(jù)都儲存在里邊,用的時(shí)候再取

2.使用vuex插件

3.登錄的時(shí)候把token和登錄狀態(tài)(自定義的)賦值給sessionstorage,當(dāng)刷新頁面的時(shí)候(路由跳轉(zhuǎn))從 sessionstorage中獲取token和登錄狀態(tài)賦值給store,就會自己重新請求相關(guān)頁面的數(shù)據(jù)

我思考過后我選擇了方法3,只不過這個(gè)方法要和路由攔截結(jié)合起來,后面路由完事一起貼代碼

代碼

index

actions

// 登錄
 Login({ commit, state }, userInfo) {
  return new Promise((resolve, reject) => {
   login(userInfo).then(response => {
    let token = response.data.token;
    commit('SET_TOKEN', token);
    sessionStorage.setItem('token', token);  //獲取到新的token的時(shí)候賦值給sessionStorage

    commit('SET_ISLOGIN', true);  // 登錄成功修改store中的登錄狀態(tài)
    resolve()
   }).catch(error => {
    reject(error)
   })
  })
 },

路由

簡單介紹: 路由攔截就相當(dāng)于路由的'生命周期',在路由的不同時(shí)間段插入一個(gè)方法,可以在此時(shí)間段想要做什么事情,本次只在路由跳轉(zhuǎn)前搞事情,所以只使用router.beforeEach((to, from, next) => { // ... })即可,具體內(nèi)容官網(wǎng)都很詳細(xì)

main.js

router.beforeEach((to, from, next) => {
 let isLogin = sessionStorage.getItem('isLogin');
 let token = sessionStorage.getItem('token');
 let id = sessionStorage.getItem('id');
 if (to.meta.requireAuth) {  // 判斷是否有權(quán)限
  if (!store.state.isLogin && !isLogin && to.path !== '/login') {  // store和sessionStorage中登錄狀態(tài)都為false并且跳轉(zhuǎn)到 不是登錄的頁面時(shí) 都強(qiáng)行跳轉(zhuǎn)到登錄頁面  
   next({
    path: '/login',
   });
  } else if (!isLogin && to.path !== '/login') {  // 已經(jīng)在登錄頁面進(jìn)入首頁的時(shí)候
   sessionStorage.setItem('isLogin', store.state.isLogin);
   next();
  } else if (isLogin && to.path !== '/login') {  // 登錄進(jìn)入后刷新頁面時(shí)
   store.commit('SET_TOKEN', token);
   store.commit('SET_ISLOGIN', isLogin);
   store.commit('SET_ID', id);
   next();
  } else {
   next();
  }
 }
 else {
  next();
 }
});


1.路由攔截我是寫在main.js文件中的,要注意 一定要寫在vue掛載的上面(new Vue)
2.當(dāng)點(diǎn)擊登錄的時(shí)候 actions中的登錄方法要早于路由攔截
3.退出的登錄的時(shí)候 不要忘記把sessionStorage里的變量刪除

最后再說點(diǎn)什么

希望本文可以給你提供一些幫助,這是我最高興的,覺得我有寫的不對或者有問題的地方也請幫我指正出來,大家互相幫助互相進(jìn)步!!!

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • VUE3使用JSON編輯器方式

    VUE3使用JSON編輯器方式

    這篇文章主要介紹了VUE3使用JSON編輯器方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • vue實(shí)現(xiàn)兩個(gè)組件之間數(shù)據(jù)共享和修改操作

    vue實(shí)現(xiàn)兩個(gè)組件之間數(shù)據(jù)共享和修改操作

    這篇文章主要介紹了vue實(shí)現(xiàn)兩個(gè)組件之間數(shù)據(jù)共享和修改操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • vue關(guān)于點(diǎn)擊詳情頁面keep-alive的緩存問題

    vue關(guān)于點(diǎn)擊詳情頁面keep-alive的緩存問題

    這篇文章主要介紹了vue關(guān)于點(diǎn)擊詳情頁面keep-alive的緩存問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • 關(guān)于vue的element-ui web端引入高德地圖并獲取經(jīng)緯度

    關(guān)于vue的element-ui web端引入高德地圖并獲取經(jīng)緯度

    這篇文章主要介紹了關(guān)于vue的element-ui web端引入高德地圖并獲取經(jīng)緯度,高德地圖首先要去申請key和密鑰,文中提供了部分實(shí)現(xiàn)代碼和解決思路,感興趣的朋友可以學(xué)習(xí)一下
    2023-04-04
  • vue實(shí)現(xiàn)移動端H5數(shù)字鍵盤組件使用詳解

    vue實(shí)現(xiàn)移動端H5數(shù)字鍵盤組件使用詳解

    這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)移動端H5數(shù)字鍵盤組件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-08-08
  • vue 實(shí)現(xiàn) ios 原生picker 效果及實(shí)現(xiàn)思路解析

    vue 實(shí)現(xiàn) ios 原生picker 效果及實(shí)現(xiàn)思路解析

    這篇文章主要介紹了vue 實(shí)現(xiàn) ios 原生picker 效果及實(shí)現(xiàn)思路解析,本文給大家介紹的非常詳細(xì),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2017-12-12
  • vue2中@hook的解析與妙用實(shí)例

    vue2中@hook的解析與妙用實(shí)例

    vue-hooks是簡化組件定義、復(fù)用狀態(tài)邏輯的一種最新嘗試,下面這篇文章主要給大家介紹了關(guān)于vue2中@hook的解析與妙用的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-03-03
  • vue3 自定義loading的操作方法

    vue3 自定義loading的操作方法

    這篇文章主要介紹了vue3 自定義loading的操作方法,本文通過示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2023-11-11
  • 詳解基于Vue2.0實(shí)現(xiàn)的移動端彈窗(Alert, Confirm, Toast)組件

    詳解基于Vue2.0實(shí)現(xiàn)的移動端彈窗(Alert, Confirm, Toast)組件

    這篇文章主要介紹了詳解基于Vue2.0實(shí)現(xiàn)的移動端彈窗(Alert, Confirm, Toast)組件,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-08-08
  • vue-cli3跨域配置的簡單方法

    vue-cli3跨域配置的簡單方法

    這篇文章主要給大家介紹了關(guān)于vue-cli3跨域配置的簡單方法,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用vue-cli3具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09

最新評論