1. 程式人生 > 程式設計 >vue儲存storage時含有布林值的解決方案

vue儲存storage時含有布林值的解決方案

vue儲存storage時含有布林值

今天遇到一個問題,需要將後臺返回的true和false存到storage中去,然後用儲存的這個值進行邏輯判斷,但是一直判斷都是錯誤的,後面查閱了一下資料才發現

在localstorage中儲存資料的時候,儲存的boolean值都會變成字串,而不是剛開始儲存進去的boolean值

在這裡插入圖片描述

都變成了字串

那麼怎麼解決呢?

一:前端進行一次轉化

if (localStorage.getItem('布林值') == 'true') {
		// 重新賦值為新的值
		'布林值' = true
}

或者是在儲存的時候,就不要用boolean值進行儲存,用數字或者是其他的進行代替,然後判斷就是了

// 後臺返回的值是true
if (true) {
	localStorage.setItem('布林值',1)
}else {
	localStorage.setItem(uOesWYvIyI'布林值',2)
}
// 需要用的時候
if (localStorage.getItem('布林值') == 1) {
	// 處理事件
}else {
	// 處理事件
}

l程式設計客棧ocalstorage儲存布林值的一次坑

問題描述

最近工作中使用localstorage存程式設計客棧貯一些共享的變數,結果在存貯布林值的時候遇到了很多問題;

一般情況下,存取如下:

localstorage.setItem('key',value);//存
localstorage.getItem('key');//取

但是在儲存布林型資料時,由於localstorage中儲存的boolean資料都變成了字串,故"true"=true及"false"==false,“true”==false顯示都為false,導致嘗試了很多次都沒有找到問題所在;

最終解決方法

當 localstorage 或 sessionstorage 儲存布林值資料時,取到的資料變成了字串'true' 'false',建議在儲存該型別資料時將 value 設定為 0、1,取值時用Number(localstorage.getItem('key')),再進行後續判斷操作;

具體程式碼如下所示:

存值:

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==1uOesWYvIyI){
          this.flag=false;
     }
}

總結:

localStorage和sessionStorage都只能儲存字串型別的物件,對於js中常用的陣列或物件卻不uOesWYvIyI能直接儲存;

可以通過JSON物件提供的parse和stringify將其他資料型別轉化成字串,再儲存到storage中就可以了;

程式碼如下:

存值:

localStorage.setItem("flag_data",JSON.stringify(flagData));

取值:

var flag_data=JSON.parse(localStorage.getItem("flag_data"));

以上為個人經驗,希望能給大家一個參考,也希望大家多多支援我們。