vue儲存storage時含有布林值的解決方案
阿新 • • 發佈:2021-06-07
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"));
以上為個人經驗,希望能給大家一個參考,也希望大家多多支援我們。