需求:記憶選中的選項,或許默認是東莞倉,
//記住選擇的倉庫
rememberWh(whParams){
let key = this.$route.name + ':whSelected'
localStorage.setItem(key, JSON.stringify(whParams))
},
//設置倉庫
setWh(){
let key = this.$route.name + ':whSelected'
let whInfo = localStorage.getItem(key);
let that = this
if(whInfo!=null){
let wh = JSON.parse(whInfo);
this.$nextTick(() => {
that.form.setFieldsValue({
whId: wh.whId,
})
})
}
},
瀏覽器端存儲數據的用途很廣泛,比如在保存用戶信息、存儲個性化設置信息、保存某種狀態或是資料等方面都會用到。
其中方法主要有三種:cookie、sessionStorage、localStorage。下面主要討論一下我在學習過程中發現這三者的區別。
1.是否與服務器端交互:
cookie數據始終在同源的http請求中攜帶(即使不需要),即cookie在瀏覽器和服務器間來回傳遞;
而sessionStorage和localStorage不會自動把數據發給服務器,僅在本地保存。(每台電腦只會默認/記住本地選擇的,因為不請求服務器)
2.存儲大小限制:
cookie存儲的數據不能超過4k,同時因為每次http請求都會攜帶cookie,所以cookie只適合保存很小的數據,比如會話標識;
sessionStorage和localStorage 雖然也有存儲大小的限制,但比cookie大得多,可以達到5M或更大。
3.數據有效期不同:
sessionStorage僅在當前瀏覽器窗口關閉或刷新前有效,需要持久保存的數據自然也就不可能使用sessionStorage;
localStorage保存數據始終有效,窗口或瀏覽器關閉也一直保存,因此可用作持久保存數據;
cookie只在開發人員設置的有效期時間之前一直有效,即使窗口或瀏覽器關閉。
4.作用域不同:
sessionStorage在不同的瀏覽器窗口中不能共享,即使是同源頁面;
localStorage 在所有瀏覽器的同源窗口中都是共享的;
cookie也是在所有同源窗口中都是共享的。