這篇文章主要介紹了詳解刷新頁面vuex資料不消失和不跳轉頁面的解決,現在分享給大家,也給大家做個參考。
先說點什麼
vuex和路由攔截這一塊搗鼓的有一段時間了,總算是爬出來了,特地來分享一下,首先聲明沒有什麼基礎介紹,用的是登入狀態儲存sessionStorage的方法!!!
進入正題
刷新
##刷新相當與重啟項目,先前取得的資料也只是透過store暫存起來,專案關閉時就不見了,這有些像是電腦重啟,儲存在RAM的資料會消失。但儲存在sessionstorage、localstorage和cookie裡的內容不會消失.Vuex
方法思路##首先得熟悉vuex,官網中介紹Vuex 是一個專為Vue.js 應用程式開發的狀態管理模式,也就是說vuex中的store中的資料都是臨時的,都是一些變數,頁面刷新重新載入,所有都清空,並且已經在頁面中沒有進行二次登陸,vuex中就一直是空的,所以就分生出了幾個方法
1.因為sessionstorage(關閉頁面會消失)、localstorage和cookie刷新頁面資料不會消失,所以可以把所有請求到的資料都儲存在裡邊,用的時候再取
2.使用vuex插件
3.登入的時候把token和登入狀態(自訂的)賦值給sessionstorage,當刷新頁面的時候(路由跳轉)從sessionstorage中獲取token和登錄狀態賦值給store,就會自己重新請求相關頁面的資料
我思考過後我選擇了方法3,只不過這個方法要和路由攔截結合起來,後面路由完事一起貼代碼
代碼
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的时候赋值给sessionStorage commit('SET_ISLOGIN', true); // 登录成功修改store中的登录状态 resolve() }).catch(error => { reject(error) }) }) },路由
簡單介紹: 路由攔截就相當於路由的'生命週期',在路由的不同時間段插入一個方法,可以在此時間段想要做什麼事情,這次只在路由跳轉前搞事情,所以只使用router.beforeEach((to, from, next) => { // ... })即可,具體內容官網都很詳細
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) { // 判断是否有权限 if (!store.state.isLogin && !isLogin && to.path !== '/login') { // store和sessionStorage中登录状态都为false并且跳转到 不是登录的页面时 都强行跳转到登录页面 next({ path: '/login', }); } else if (!isLogin && to.path !== '/login') { // 已经在登录页面进入首页的时候 sessionStorage.setItem('isLogin', store.state.isLogin); next(); } else if (isLogin && to.path !== '/login') { // 登录进入后刷新页面时 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.點擊登入的時候actions中的登入方法要早於路由攔截3.退出的登入的時候不要忘記把sessionStorage裡的變數刪除
上面是我整理給大家的,希望今後對大家有幫助。
相關文章:
使用js如何呼叫json#在Nodejs下使用gm裁剪在合成圖片如何使用babel安裝設定教學以上是刷新頁面vuex資料不消失和不跳轉頁面問題(詳細教學)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

Node.js擅長於高效I/O,這在很大程度上要歸功於流。 流媒體匯總處理數據,避免內存過載 - 大型文件,網絡任務和實時應用程序的理想。將流與打字稿的類型安全結合起來創建POWE

Python和JavaScript在性能和效率方面的差異主要體現在:1)Python作為解釋型語言,運行速度較慢,但開發效率高,適合快速原型開發;2)JavaScript在瀏覽器中受限於單線程,但在Node.js中可利用多線程和異步I/O提升性能,兩者在實際項目中各有優勢。

JavaScript起源於1995年,由布蘭登·艾克創造,實現語言為C語言。 1.C語言為JavaScript提供了高性能和系統級編程能力。 2.JavaScript的內存管理和性能優化依賴於C語言。 3.C語言的跨平台特性幫助JavaScript在不同操作系統上高效運行。

JavaScript在瀏覽器和Node.js環境中運行,依賴JavaScript引擎解析和執行代碼。 1)解析階段生成抽象語法樹(AST);2)編譯階段將AST轉換為字節碼或機器碼;3)執行階段執行編譯後的代碼。

Python和JavaScript的未來趨勢包括:1.Python將鞏固在科學計算和AI領域的地位,2.JavaScript將推動Web技術發展,3.跨平台開發將成為熱門,4.性能優化將是重點。兩者都將繼續在各自領域擴展應用場景,並在性能上有更多突破。

Python和JavaScript在開發環境上的選擇都很重要。 1)Python的開發環境包括PyCharm、JupyterNotebook和Anaconda,適合數據科學和快速原型開發。 2)JavaScript的開發環境包括Node.js、VSCode和Webpack,適用於前端和後端開發。根據項目需求選擇合適的工具可以提高開發效率和項目成功率。

是的,JavaScript的引擎核心是用C語言編寫的。 1)C語言提供了高效性能和底層控制,適合JavaScript引擎的開發。 2)以V8引擎為例,其核心用C 編寫,結合了C的效率和麵向對象特性。 3)JavaScript引擎的工作原理包括解析、編譯和執行,C語言在這些過程中發揮關鍵作用。

JavaScript是現代網站的核心,因為它增強了網頁的交互性和動態性。 1)它允許在不刷新頁面的情況下改變內容,2)通過DOMAPI操作網頁,3)支持複雜的交互效果如動畫和拖放,4)優化性能和最佳實踐提高用戶體驗。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

Dreamweaver CS6
視覺化網頁開發工具

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

Atom編輯器mac版下載
最受歡迎的的開源編輯器

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。