欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Vue監(jiān)聽localstorage變化的方法詳解

 更新時間:2023年10月10日 10:07:31   作者:Best_Liu~  
在日常開發(fā)中,我們經(jīng)常使用localStorage來存儲一些變量,這些變量會存儲在瀏覽中,對于localStorage來說,即使關(guān)閉瀏覽器,這些變量依然存儲著,方便我們開發(fā)的時候在別的地方使用,本文就給大家介紹Vue如何監(jiān)聽localstorage的變化,需要的朋友可以參考下

一. 說明

在日常開發(fā)中,我們經(jīng)常使用localStorage來存儲一些變量。這些變量會存儲在瀏覽中。對于localStorage來說,即使關(guān)閉瀏覽器,這些變量依然存儲著,方便我們開發(fā)的時候在別的地方使用。

二. localStorage的使用

存儲值:window.localStorage.setItem(‘鍵名’, 值)
讀取值:window.localStorage.getItem('‘鍵名’)

三. 監(jiān)聽localStorage值的變化

  1. 1.在utils中新建一個文件watchLocalStorage.ts
export default function dispatchEventStroage() {
	const signSetItem = localStorage.setItem
	localStorage.setItem = function (key, val) {
		let setEvent = new Event('setItemEvent')
		setEvent.key = key
		setEvent.newValue = val
		window.dispatchEvent(setEvent)
		// eslint-disable-next-line prefer-rest-params
		signSetItem.apply(this, arguments)
	}
}
  • 2. 在main.js中引入并掛載
import dispatchEventStroage from './utils/watchLocalStorage'
Vue.use(dispatchEventStroage);
  • 3.在需要監(jiān)聽的地方使用如下代碼
mounted () {
      // 監(jiān)聽localhostStorage的數(shù)據(jù)變化,結(jié)合utils/tool.js配合使用
      const that=this 
      window.addEventListener('setItemEvent', function (e) {
        if (e.key === 'myKey') {   // myKey是需要監(jiān)聽的鍵名
          that.mykey = e.newValue;
          console.log(JSON.parse(e.newValue))   // 這里的newValue就是localStorage中,鍵名為myKey對應(yīng)的變化后的值。
          console.log('本地存儲值發(fā)生變化:', e.newValue)
        }
      })
    },

特別注意:

我剛開始做的時候,考慮不周,沒有寫const that=this 這一句,我用的如下代碼,一直報(bào)錯,賦值不了,如下代碼是錯誤的,

為什么要用const that=this這一個呢?

那是因?yàn)樵贘avaScript中,this代表的是當(dāng)前對象,他是會隨程序運(yùn)行不停改變的,如果用this的話,this是addEventListener監(jiān)聽中當(dāng)前的對象,所以賦值的時候不能賦值到外面去。const that = this 其實(shí)就是在this改變之前先復(fù)制一份給that,那么在程序后面的運(yùn)行中就可以用that來賦值該函數(shù)以外的對象了,比如that.order

四.另外提供一種方法 vuex

利用 const that=this,可以將值存進(jìn)store中,

this.od2Visible = true;
    this.title = '艦船航線規(guī)劃';
    this.$store.commit("tools/setzhk", 'od5');
    var tempList = [];
    const that = this;
    var handler = new Cesium.ScreenSpaceEventHandler(window.viewer.scene.canvas); // 創(chuàng)建鼠標(biāo)事件handler
    handler.setInputAction(function(click) { // 監(jiān)聽鼠標(biāo)左鍵點(diǎn)擊事件
        // 獲取點(diǎn)擊位置的地球坐標(biāo)
        var cartesian = window.viewer.camera.pickEllipsoid(click.position, window.viewer.scene.globe.ellipsoid);
        // 轉(zhuǎn)換為笛卡爾坐標(biāo)系 
        let cartographic1 = Cesium.Cartographic.fromCartesian(cartesian);
        // 轉(zhuǎn)換為經(jīng)緯度
        var latitude = Cesium.Math.toDegrees(cartographic1.latitude);
        var longitude = Cesium.Math.toDegrees(cartographic1.longitude);
        tempList.push(longitude,latitude)
          if (cartesian) {
              var entity = window.viewer.entities.add({ // 在該位置添加點(diǎn)
                  position: cartesian,
                  point: {
                      pixelSize: 10,
                      color: Cesium.Color.YELLOW
                  }
              });
          }
          localStorage.setItem('lonlan',tempList)
          that.$store.commit("tools/setlonlat", tempList);
          console.log(1001,that)
      }, Cesium.ScreenSpaceEventType.LEFT_CLICK);

然后再使用 用 計(jì)算屬性 computed 和 watch 監(jiān)聽實(shí)現(xiàn)

computed: {
    lonlat(){
      return this.$store.state.tools.lonlat
    }
  },
  watch: {
    lonlat(newVal,oldVal){
      console.log(1002,newVal,oldVal)
    }
  },

到此這篇關(guān)于Vue監(jiān)聽localstorage變化的方法詳解的文章就介紹到這了,更多相關(guān)Vue監(jiān)聽localstorage變化內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 用vite搭建vue3應(yīng)用的實(shí)現(xiàn)方法

    用vite搭建vue3應(yīng)用的實(shí)現(xiàn)方法

    這篇文章主要介紹了用vite搭建vue3應(yīng)用的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • vue實(shí)現(xiàn)定時刷新數(shù)據(jù),每隔5分鐘執(zhí)行一次

    vue實(shí)現(xiàn)定時刷新數(shù)據(jù),每隔5分鐘執(zhí)行一次

    這篇文章主要介紹了vue實(shí)現(xiàn)定時刷新數(shù)據(jù),每隔5分鐘執(zhí)行一次問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • undefined是否會變?yōu)閚ull原理解析

    undefined是否會變?yōu)閚ull原理解析

    這篇文章主要為大家介紹了undefined是否會變?yōu)閚ull原理解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • 解決vue net :ERR_CONNECTION_REFUSED報(bào)錯問題

    解決vue net :ERR_CONNECTION_REFUSED報(bào)錯問題

    這篇文章主要介紹了解決vue net :ERR_CONNECTION_REFUSED報(bào)錯問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • vue項(xiàng)目base64加解密使用方式以及解密亂碼

    vue項(xiàng)目base64加解密使用方式以及解密亂碼

    這篇文章主要介紹了vue項(xiàng)目base64加解密使用方式以及解密亂碼問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • 使用vue2.6實(shí)現(xiàn)抖音【時間輪盤】屏保效果附源碼

    使用vue2.6實(shí)現(xiàn)抖音【時間輪盤】屏保效果附源碼

    前段時間看抖音,有人用時間輪盤作為動態(tài)的桌面壁紙,一時間成為全網(wǎng)最火的電腦屏保,后來小米等運(yùn)用市場也出現(xiàn)了【時間輪盤】,有點(diǎn)像五行八卦,感覺很好玩,于是突發(fā)奇想,自己寫一個網(wǎng)頁版小DEMO玩玩,需要的朋友可以參考下
    2019-04-04
  • Vue使用new?Blob()實(shí)現(xiàn)不同類型的文件下載功能

    Vue使用new?Blob()實(shí)現(xiàn)不同類型的文件下載功能

    這篇文章主要給大家介紹了關(guān)于Vue使用new?Blob()實(shí)現(xiàn)不同類型的文件下載功能的相關(guān)資料,在Vue項(xiàng)目中,經(jīng)常用Blob二進(jìn)制進(jìn)行文件下載功能,需要的朋友可以參考下
    2023-07-07
  • Vue頁面加載后和刷新后的樣式差異問題的解決方案

    Vue頁面加載后和刷新后的樣式差異問題的解決方案

    在使用?Vue?構(gòu)建的單頁面應(yīng)用中,頁面的樣式可能因?yàn)槁酚汕袚Q、組件加載順序或樣式的動態(tài)加載導(dǎo)致樣式混亂,尤其是在復(fù)雜的應(yīng)用中,隨著頁面的切換或者刷新,按鈕、文字、布局等可能表現(xiàn)出不同的樣式,所以本文給大家介紹了Vue頁面加載后和刷新后的樣式差異問題的解決方案
    2025-01-01
  • 詳解Vue3的虛擬DOM是如何生成的

    詳解Vue3的虛擬DOM是如何生成的

    這篇文章給大家詳細(xì)介紹了 Vue3 的虛擬DOM生成規(guī)則,文章通過代碼示例和圖片介紹的非常詳細(xì),具有一定的參考價值,對我們的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2023-09-09
  • vue 插槽簡介及使用示例

    vue 插槽簡介及使用示例

    這篇文章主要介紹了vue 插槽簡介及使用示例,幫助大家更好的理解和學(xué)習(xí)vue框架,感興趣的朋友可以了解下
    2020-11-11

最新評論