一 什么是localStorage
對瀏覽器來說,使用 Web Storage 存儲鍵值對比存儲 Cookie 方式更直觀,而且容量更大,它包含兩種:localStorage 和 sessionStorage
-
sessionStorage(臨時存儲) :為每一個數據源維持一個存儲區域,在瀏覽器打開期間存在,包括頁面重新加載
-
localStorage(長期存儲) :與 sessionStorage 一樣,但是瀏覽器關閉后,數據依然會一直存在
所以上次使用cookie的時候就遇到了一個坑,設置后馬上訪問session會獲取不到,蛋疼,還需要刷新一下,原因是:
二 使用方法
注意:sessionStorage 和 localStorage 的用法基本一致,引用類型的值要轉換成JSON,所以這里就只列舉localStorage
1 保存
1
2
3
4
5
6
7
8
9
10
11
12
13
|
//對象
const info = { name:
'hou'
, age: 24, id:
'001'
};
//字符串
const str=
"haha"
;
localStorage.setItem(
'hou'
, JSON.stringify(info));
localStorage.setItem(
'zheng'
, str);
|
2 獲取
1
2
3
|
var
data1 = JSON.parse(localStorage.getItem(
'hou'
));
var
data2 = localStorage.getItem(
'zheng'
);
|
3 刪除
1
2
3
4
5
|
//刪除某個
localStorage.removeItem(
'hou'
);
//刪除所有
localStorage.clear();
|
4 監聽
1
2
3
4
5
|
Storage 發生變化(增加、更新、刪除)時的 觸發,同一個頁面發生的改變不會觸發,只會監聽同一域名下其他頁面改變 Storage
window.addEventListener(
'storage'
,
function
(e) {
console.log(
'key'
, e.key); console.log(
'oldValue'
, e.oldValue);
console.log(
'newValue'
, e.newValue); console.log(
'url'
, e.url);
})
|
5瀏覽器中查看

6 vue中實踐
根據我的需求來的一個默認記住上次選擇的,很簡單
添加數據的時候,下次添加默認記住我上次的選擇
所以,在添加或者提交的時候存儲值即可,
1
2
3
4
5
6
7
8
9
10
|
//記住上次選中的審核人
if
(localStorage.length>0){
var
mydata = localStorage.getItem(
'projectId'
);
if
(mydata!=
null
){
var
arr3=mydata.split(
","
);
if
(arr3[0]==me.workhourData.projectId){
me.workhourData.projectManager=arr3[1];
}
}
}
|
7 注意點
localStorage有效期是永久的。一般的瀏覽器能存儲的是5MB左右。sessionStorage api與localStorage相同。
sessionStorage默認的有效期是瀏覽器的會話時間(也就是說標簽頁關閉后就消失了)。
localStorage作用域是協議、主機名、端口。(理論上,不人為的刪除,一直存在設備中)
sessionStorage作用域是窗口、協議、主機名、端口。
知道了這些知識點后,你的問題就很好解決了。
localStorage是window上的。所以不需要寫this.localStorage,vue中如果寫this,是指vue實例。會報錯