vue儲存storage時(shí)含有布爾值的解決方案
vue儲存storage時(shí)含有布爾值
今天遇到一個(gè)問題,需要將后臺返回的true和false存到storage中去,然后用儲存的這個(gè)值進(jìn)行邏輯判斷,但是一直判斷都是錯(cuò)誤的,后面查閱了一下資料才發(fā)現(xiàn)
在localstorage中儲存數(shù)據(jù)的時(shí)候,儲存的boolean值都會變成字符串,而不是剛開始儲存進(jìn)去的boolean值
都變成了字符串
那么怎么解決呢?
一:前端進(jìn)行一次轉(zhuǎn)化
if (localStorage.getItem('布爾值') == 'true') { // 重新賦值為新的值 '布爾值' = true }
或者是在儲存的時(shí)候,就不要用boolean值進(jìn)行存儲,用數(shù)字或者是其他的進(jìn)行代替,然后判斷就是了
// 后臺返回的值是true if (true) { localStorage.setItem('布爾值', 1) }else { localStorage.setItem('布爾值', 2) } // 需要用的時(shí)候 if (localStorage.getItem('布爾值') == 1) { // 處理事件 }else { // 處理事件 }
localstorage存儲布爾值的一次坑
問題描述
最近工作中使用localstorage存貯一些共享的變量,結(jié)果在存貯布爾值的時(shí)候遇到了很多問題;
一般情況下,存取如下:
localstorage.setItem('key', value);//存 localstorage.getItem('key');//取
但是在存儲布爾型數(shù)據(jù)時(shí),由于localstorage中存儲的boolean數(shù)據(jù)都變成了字符串,故"true"=true及"false"==false,“true”==false顯示都為false,導(dǎo)致嘗試了很多次都沒有找到問題所在;
最終解決方法
當(dāng) localstorage 或 sessionstorage 存儲布爾值數(shù)據(jù)時(shí),取到的數(shù)據(jù)變成了字符串'true' 'false',建議在存儲該類型數(shù)據(jù)時(shí)將 value 設(shè)置為 0、1,取值時(shí)用Number(localstorage.getItem('key')),再進(jìn)行后續(xù)判斷操作;
具體代碼如下所示:
存值:
if (this.isChecked) { //0:checked localStorage.setItem("checked",0); } else { //1:not checked localStorage.setItem("checked",1); }
取值:
getFlag:function(){ var flag=Number(localStorage.getItem('checked')); if(flag==0){ this.flag=true; }else if(flag==1){ this.flag=false; } }
總結(jié):
localStorage和sessionStorage都只能存儲字符串類型的對象,對于JS中常用的數(shù)組或?qū)ο髤s不能直接存儲;
可以通過JSON對象提供的parse和stringify將其他數(shù)據(jù)類型轉(zhuǎn)化成字符串,再存儲到storage中就可以了;
代碼如下:
存值:
localStorage.setItem("flag_data",JSON.stringify(flagData));
取值:
var flag_data=JSON.parse(localStorage.getItem("flag_data"));
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
解決vant的Cascader級聯(lián)選擇組建css樣式錯(cuò)亂問題
這篇文章主要介紹了解決vant的Cascader級聯(lián)選擇組建css樣式錯(cuò)亂問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-07-07Vue3?$emit用法指南(含選項(xiàng)API、組合API及?setup?語法糖)
這篇文章主要介紹了Vue3?$emit用法指南,使用?emit,我們可以觸發(fā)事件并將數(shù)據(jù)傳遞到組件的層次結(jié)構(gòu)中,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2022-07-07vue.js 打包時(shí)出現(xiàn)空白頁和路徑錯(cuò)誤問題及解決方法
這篇文章主要介紹了vue.js 打包時(shí)出現(xiàn)空白頁和路徑錯(cuò)誤問題及解決方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-06-06vue之input輸入框防抖debounce函數(shù)的使用方式
這篇文章主要介紹了vue之input輸入框防抖debounce函數(shù)的使用方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-11-11深入了解vue中一鍵復(fù)制功能的實(shí)現(xiàn)
在現(xiàn)代的Web應(yīng)用中,用戶體驗(yàn)至關(guān)重要,而提供簡單易用的復(fù)制功能是改善用戶體驗(yàn)的一項(xiàng)關(guān)鍵功能,本文將為大家詳細(xì)介紹Vue實(shí)現(xiàn)一鍵復(fù)制功能的具體方法,需要的可以參考下2023-11-11詳解vue-router數(shù)據(jù)加載與緩存使用總結(jié)
這篇文章主要介紹了詳解vue-router數(shù)據(jù)加載與緩存使用總結(jié),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-10-10vue中axios利用blob實(shí)現(xiàn)文件瀏覽器下載方式
這篇文章主要介紹了vue中axios利用blob實(shí)現(xiàn)文件瀏覽器下載方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-05-05vue項(xiàng)目打包成桌面快捷方式(electron)的方法
本文主要介紹了vue項(xiàng)目打包成桌面快捷方式(electron)的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06關(guān)于Vue在ie10下空白頁的debug小結(jié)
這篇文章主要給大家介紹了關(guān)于Vue在ie10下空白頁的debug相關(guān)資料,這是最近在工作中遇到的一個(gè)問題,通過查找相關(guān)的資料終于解決了,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2018-05-05