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

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

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

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

解決方案:

1、session&服務器渲染

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

如果項目采用前后端分離思想,服務器只提供接口,不進行服務器渲染,那么這種辦法是行不通了。

2、$route.query

我們可以在路由跳轉的時候帶上登錄請求的參數:

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
 }
})

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

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

3、cookie

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

cookie存取數據比較麻煩,因為cookie是一個字符串,保存的鍵值對以 "=" 鏈接,需要額外寫操作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存儲,潛意識肯定覺得很多瀏覽器都不支持,其實IE8及以上都支持localStorage和sessionStorage了。Vue項目最低支持IE9,所以可以放心的使用Web存儲。

localStorage存儲數據沒有時間限制,不主動刪除就不會失效。而sessionStorage是在頁面或者瀏覽器關閉時就會失效,適合本場景應用。

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

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

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)

總結

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

相關文章

  • Vue中Class和Style實現(xiàn)v-bind綁定的幾種用法

    Vue中Class和Style實現(xiàn)v-bind綁定的幾種用法

    項目開發(fā)中給元素添加/刪除 class 是非常常見的行為之一, 例如網站導航都會給選中項添加一個 active 類用來區(qū)別選與未選中的樣式,那么在 vue 中 我們如何處理這類的效果呢?下面我們就一起來了解一下
    2021-05-05
  • Vue引入sign-canvas實現(xiàn)簽名畫板效果

    Vue引入sign-canvas實現(xiàn)簽名畫板效果

    這篇文章主要介紹了Vue引入sign-canvas實現(xiàn)簽名畫板,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-03-03
  • 簡述vue中的config配置

    簡述vue中的config配置

    這篇文章主要介紹了vue中的config配置 ,本文給大家介紹的非常詳細,具有參考借鑒價值,需要的朋友可以參考下
    2018-01-01
  • vue+element-ui表格封裝tag標簽使用插槽

    vue+element-ui表格封裝tag標簽使用插槽

    這篇文章主要介紹了vue+element-ui表格封裝tag標簽使用插槽,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-06-06
  • Vite打包分割代碼的詳細過程記錄

    Vite打包分割代碼的詳細過程記錄

    項目創(chuàng)建Vite是一個web開發(fā)構建工具,由于其原生ES模塊導入方法,它允許快速提供代碼,下面這篇文章主要給大家介紹了關于Vite打包分割代碼的相關資料,需要的朋友可以參考下
    2022-09-09
  • vue引入新版 vue-awesome-swiper插件填坑問題

    vue引入新版 vue-awesome-swiper插件填坑問題

    這篇文章主要介紹了vue引入新版 vue-awesome-swiper插件填坑問題,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-01-01
  • vue實現(xiàn)標簽云效果的示例

    vue實現(xiàn)標簽云效果的示例

    這篇文章主要介紹了vue實現(xiàn)標簽云效果的示例,幫助大家更好的理解和使用vue框架,感興趣的朋友可以了解下
    2020-11-11
  • vue中 this.$set的使用詳解

    vue中 this.$set的使用詳解

    這篇文章主要為大家介紹了vue中 this.$set的使用,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-11-11
  • vue移動端實現(xiàn)左滑編輯與刪除的全過程

    vue移動端實現(xiàn)左滑編輯與刪除的全過程

    vue.js是現(xiàn)在流行的js框架之一,vue 是一套用于構建用戶界面的漸進式javascript框架,這篇文章主要給大家介紹了關于vue移動端實現(xiàn)左滑編輯與刪除的相關資料,需要的朋友可以參考下
    2021-05-05
  • Vue路由切換和Axios接口取消重復請求詳解

    Vue路由切換和Axios接口取消重復請求詳解

    在web項目開發(fā)的過程中,經常會遇到客服端重復發(fā)送請求的場景,下面這篇文章主要給大家介紹了關于Vue路由切換和Axios接口取消重復請求的相關資料,需要的朋友可以參考下
    2022-05-05

最新評論