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

解決vue router組件狀態(tài)刷新消失的問題

 更新時間:2018年08月01日 16:55:13   作者:huanglei-  
這篇文章主要介紹了vue router組件狀態(tài)刷新消失的問題,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下

場景:vue-router實(shí)現(xiàn)的單頁應(yīng)用,登錄頁調(diào)用登錄接口后,服務(wù)器返回用戶信息,然后通過router.push({name: 'index', params: res.data})跳轉(zhuǎn)到主頁,并在主頁顯示數(shù)據(jù)。但是當(dāng)刷新頁面時,由于并不是通過登錄接口進(jìn)入主頁,router中沒有‘params: res.data'信息,主頁無法獲取到登錄信息。

解決方案:

1、session&服務(wù)器渲染

傳統(tǒng)的方案是,登錄頁和主頁是單獨(dú)的兩個頁面,登錄成功后服務(wù)器生成用戶信息對應(yīng)的session,然后渲染主頁數(shù)據(jù),并通過響應(yīng)頭將sessionid傳給瀏覽器并生成相應(yīng)的cookie文件。這樣下次請求頁面時,瀏覽器會在http header帶上相應(yīng)的cookie,然后服務(wù)器根據(jù)cookie中的sessionid判斷用戶是否登錄,再顯示用戶數(shù)據(jù)。

如果項(xiàng)目采用前后端分離思想,服務(wù)器只提供接口,不進(jìn)行服務(wù)器渲染,那么這種辦法是行不通了。

2、$route.query

我們可以在路由跳轉(zhuǎn)的時候帶上登錄請求的參數(shù):

router.push({name:'index', query:{username: 'xxx', password: 'xxxxxx'}})
...
this.$ajax({
 url: 'xxx',
 method: 'post',
 data: {
 username: this.$route.query.username,
 password: this.$route.query.password
 }
})

這樣登錄參數(shù)會被保存在url中,像這樣:“ http://xxx.xxx.xxx/index?username=xxx&password=xxxxxx ”,然后在created鉤子中調(diào)用登錄接口來返回數(shù)據(jù)。

即使密碼進(jìn)行了加密,將用戶名密碼這類敏感信息放在url中肯定也是不合理。

3、cookie

另一個辦法是把登錄參數(shù)存入cookie,然后在created鉤子中獲取cookie中存的信息,再調(diào)用登錄接口。將用戶名密碼存入cookie中同樣不合理,改進(jìn)版是登錄成功后服務(wù)器返回一個token,在有效期內(nèi)通過token獲取用戶數(shù)據(jù)。

cookie存取數(shù)據(jù)比較麻煩,因?yàn)閏ookie是一個字符串,保存的鍵值對以 "=" 鏈接,需要額外寫操作cookie的方法。

function setCookie (name, value, exdays) {
 let date = new Date()
 date.setTime(date.getTime() + (exdays * 24 * 60 * 60 * 1000))
 let expires = 'expires=' + date.toGMTString()
 document.cookie = name + '=' + value + '; ' + expires
}
function getCookie (name) {
 name = name + '='
 let cookieArr = document.cookie.split(';')
 for (let i = 0; i < cookieArr.length; i++) {
 let cookie = cookieArr[i].trim()
 if (cookie.indexOf(name) === 0) {
  return cookie.slice(name.length)
 }
 }
 return ''
}

4、HTML5 Web存儲

提到Web存儲,潛意識肯定覺得很多瀏覽器都不支持,其實(shí)IE8及以上都支持localStorage和sessionStorage了。Vue項(xiàng)目最低支持IE9,所以可以放心的使用Web存儲。

localStorage存儲數(shù)據(jù)沒有時間限制,不主動刪除就不會失效。而sessionStorage是在頁面或者瀏覽器關(guān)閉時就會失效,適合本場景應(yīng)用。

我們可以把token信息存在sessionStorage中,然后每次刷新頁面通過token請求數(shù)據(jù);但是既然能夠把token存儲到本地,為什么不直接把常用的數(shù)據(jù)直接保存到本地呢?利用本地數(shù)據(jù),可以減少客戶端網(wǎng)絡(luò)請求,還可以降低服務(wù)器負(fù)擔(dān)。

由于sessionStorage中保存的值是字符串,直接賦值非字符串類型會先調(diào)用其toString()方法。例如執(zhí)行sessionStorage.user = user,保存的值卻是[object Object]。我們可以通過JSON.stringify()將需要保存的對象轉(zhuǎn)為JSON字符串再保存到sessionStorage,然后在需要使用時通過JSON.parse()將字符串轉(zhuǎn)回對象。

let user = {
 name: 'admin',
 address: 'xxx',
 email: 'xx@xx.xx'
}
// sessionStorage.user = user // [object Object]
sessionStorage.user = JSON.stringify(user)
...
let data = JSON.parse(sessionStorage.user)

總結(jié)

以上所述是小編給大家介紹的解決vue router組件狀態(tài)刷新消失的問題,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • vue數(shù)據(jù)傳遞--我有特殊的實(shí)現(xiàn)技巧

    vue數(shù)據(jù)傳遞--我有特殊的實(shí)現(xiàn)技巧

    這篇文章主要介紹了vue數(shù)據(jù)傳遞一些特殊梳理技巧,需要的朋友可以參考下
    2018-03-03
  • 記一次用ts+vuecli4重構(gòu)項(xiàng)目的實(shí)現(xiàn)

    記一次用ts+vuecli4重構(gòu)項(xiàng)目的實(shí)現(xiàn)

    這篇文章主要介紹了記一次用ts+vuecli4重構(gòu)項(xiàng)目的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • elementUi vue el-radio 監(jiān)聽選中變化的實(shí)例代碼

    elementUi vue el-radio 監(jiān)聽選中變化的實(shí)例代碼

    這篇文章主要介紹了elementUi vue el-radio 監(jiān)聽選中變化,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-06-06
  • Vue 調(diào)試訪問本地后端接口配置

    Vue 調(diào)試訪問本地后端接口配置

    記錄一下本地測試前端的時候怎么訪問本地后端接口,文中給大家提到了vue如何做調(diào)試后臺接口的配置和proxy的工作原理以及為什么能解決跨域,感興趣的朋友跟隨小編一起看看吧
    2023-06-06
  • vue?過濾、模糊查詢及計算屬性?computed詳解

    vue?過濾、模糊查詢及計算屬性?computed詳解

    計算屬性是vue里面為了簡化在模板語法中對響應(yīng)式屬性做計算而存在的,這篇文章主要介紹了vue?過濾、模糊查詢(計算屬性?computed),需要的朋友可以參考下
    2022-11-11
  • Vue項(xiàng)目中實(shí)現(xiàn)ElementUI按需引入過程解析

    Vue項(xiàng)目中實(shí)現(xiàn)ElementUI按需引入過程解析

    這篇文章主要介紹了Vue項(xiàng)目中實(shí)現(xiàn)ElementUI按需引入,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-05-05
  • vue中如何實(shí)現(xiàn)后臺管理系統(tǒng)的權(quán)限控制的方法步驟

    vue中如何實(shí)現(xiàn)后臺管理系統(tǒng)的權(quán)限控制的方法步驟

    這篇文章主要介紹了vue中如何實(shí)現(xiàn)后臺管理系統(tǒng)的權(quán)限控制的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • vue關(guān)于eslint空格縮進(jìn)等的報錯問題及解決

    vue關(guān)于eslint空格縮進(jìn)等的報錯問題及解決

    這篇文章主要介紹了vue關(guān)于eslint空格縮進(jìn)等的報錯問題及解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • VUE?使用canvas繪制管線管廊示例詳解

    VUE?使用canvas繪制管線管廊示例詳解

    這篇文章主要為大家介紹了VUE?使用canvas繪制管線/管廊實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • 淺談Vue SSR中的Bundle的具有使用

    淺談Vue SSR中的Bundle的具有使用

    這篇文章主要介紹了淺談Vue SSR中的Bundle的具有使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11

最新評論

桂东县| 杭锦后旗| 都昌县| 香港 | 西充县| 台湾省| 定兴县| 陵川县| 宣化县| 华池县| 迭部县| 民丰县| 甘肃省| 达州市| 崇仁县| 曲阜市| 建始县| 扬州市| 河北省| 巴中市| 威海市| 湾仔区| 赤峰市| 石棉县| 辽宁省| 宁晋县| 尉犁县| 明光市| 万盛区| 五原县| 嘉鱼县| 苗栗县| 崇明县| 贵阳市| 游戏| 苍山县| 巩留县| 宝山区| 云安县| 大埔区| 德惠市|