最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解vuex結(jié)合localstorage動態(tài)監(jiān)聽storage的變化

 更新時間:2018年05月03日 11:43:07   作者:Y丶小琪  
這篇文章主要介紹了詳解vuex結(jié)合localstorage動態(tài)監(jiān)聽storage的變化,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

需求:不同組件間共用同一數(shù)據(jù),當(dāng)一個組件將數(shù)據(jù)發(fā)生變化時,其他組件也可以響應(yīng)該變化。

分析:vue無法監(jiān)聽localstorage的變化。localstorage主要用于不同頁面間傳值,vue適合組件間傳值。對于組件間共用同一數(shù)據(jù)又想保存住信息或者再頁面刷新的時候不丟失數(shù)據(jù)(vuex在頁面刷新的時候存儲的值會丟失,localstorage存儲在本地瀏覽器中),可以采用vuex+localstorage的方式。

關(guān)于vuex和storage的區(qū)別

1.最重要的區(qū)別:vuex存儲在內(nèi)存,localstorage則以文件的方式存儲在本地

2.應(yīng)用場景:vuex用于組件之間的傳值,localstorage則主要用于不同頁面之間的傳值。

3.永久性:當(dāng)刷新頁面時vuex存儲的值會丟失,localstorage不會。

注:很多同學(xué)覺得用localstorage可以代替vuex, 對于不變的數(shù)據(jù)確實可以,但是當(dāng)兩個組件共用一個數(shù)據(jù)源(對象或數(shù)組)時,如果其中一個組件改變了該數(shù)據(jù)源,希望另一個組件響應(yīng)該變化時,localstorage無法做到,原因就是區(qū)別1。

關(guān)于vuex參考文檔:http://vuex.vuejs.org/zh-cn/index.html

實現(xiàn)過程:以首頁展示用戶頭像信息,修改個人信息在公共組件頭部組件中為例,當(dāng)用戶修改個人信息時首頁的圖片實時變化,如果不對頭像信息做存儲更新,每次用戶修改完只有刷新頁面或者從其他頁面返回回來才能看到變化,即新設(shè)置的頭像信息,僅展示核心代碼。

1.首先先定義一個變量在state中。State負責(zé)存儲整個應(yīng)用的狀態(tài)數(shù)據(jù),后期就可以使用this.$store.state直接獲取狀態(tài)。也可以利用vuex提供的mapState輔助函數(shù)將state映射到計算屬性中去。

const state = {
 imgInfo:null //首頁頭像信息

}

2.mutations里面存儲localstorage的信息。Mutations可以更改狀態(tài),本質(zhì)就是用來處理數(shù)據(jù)的函數(shù),其接收唯一參數(shù)值state。定義的mutation必須是同步函數(shù)。this.$store.commit(mutationName)是用來觸發(fā)一個mutation的方法,或者使用輔助函數(shù)mapMutations直接將觸發(fā)函數(shù)映射到methods上,這樣就能在元素事件綁定上直接使用了。

export const SETIMGINFO = 'SETIMGINFO'
[SETIMGINFO] (state,info) {
 state.imgInfo=info
 localStorage.setItem('imgInfo',info)
 }

3.getter里面獲取localstorage的信息。有些狀態(tài)需要做二次處理,就可以使用getters。通過this.$store.getters.valueName對派生出來的狀態(tài)進行訪問?;蛘咧苯邮褂幂o助函數(shù)mapGetters將其映射到本地計算屬性中去。

getImgInfo(state){
  if(localStorage.getItem('imgInfo')){
  state.imgInfo=localStorage.getItem('imgInfo')
  }
  return state.imgInfo
 }

4.在需要對storage進行操作的頁面引用mapMutations函數(shù)

import {mapMutations} from 'vuex' //引入mapMutations
 ...mapMutations([      
  'SETIMGINFO'
  ]),
this.SETIMGINFO(this.imgInfo) 
 //在需要的地方引用 mutations里面定義的方法

5.在需要獲取storage信息的頁面引用mapGetters輔助函數(shù)

import {mapGetters} from 'vuex'
computed:{
  ...mapGetters([   
  'getImgInfo'
  ])
 },
watch:{ //動態(tài)監(jiān)聽state的變化,實時改變頁面的數(shù)據(jù)
  getImgInfo: function(li) { //li就是改變后的state里面的imgInfo
  let vm = this;
   this.imgInfo=li //data聲明一個變量,在html引用。如果storage的值發(fā)生變化就實時刷新變量的值。
  }
 },

6.模板中對vuex的值的引用

<img :src="imgInfo?imgInfo:info.avatar"> 
//三元不等式,如果state發(fā)生變化有值就賦值給img標簽,如果沒有即剛進頁面就賦值給create生命周期函數(shù)中從接口讀出來的數(shù)據(jù)

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Vue3引入騰訊地圖包含標注簡易操作指南

    Vue3引入騰訊地圖包含標注簡易操作指南

    這篇文章主要介紹了Vue3引入騰訊地圖的相關(guān)資料,并實現(xiàn)點擊地圖添加標注的功能,示例代碼提供了添加單個或多個標注的方法,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-09-09
  • mint-ui如何自定義messageBox樣式

    mint-ui如何自定義messageBox樣式

    這篇文章主要介紹了mint-ui如何自定義messageBox樣式問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • element ui里dialog關(guān)閉后清除驗證條件方法

    element ui里dialog關(guān)閉后清除驗證條件方法

    下面小編就為大家分享一篇element ui里dialog關(guān)閉后清除驗證條件方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-02-02
  • 基于vue手動實現(xiàn)一個日歷組件

    基于vue手動實現(xiàn)一個日歷組件

    這篇文章主要為大家詳細介紹了如何基于vue手動實現(xiàn)一個日歷組件,文中的示例代碼講解詳細,具有一定的借鑒價值,有需要的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-01-01
  • Vue內(nèi)置組件Teleport的使用

    Vue內(nèi)置組件Teleport的使用

    Teleport是一個內(nèi)置組件,它可以將一個組件內(nèi)部的一部分模板“傳送”到該組件的?DOM?結(jié)構(gòu)外層的位置去,本文就來介紹一下如何使用,感興趣的可以了解一下
    2023-05-05
  • vue3簡易實現(xiàn)proxy代理實例詳解

    vue3簡易實現(xiàn)proxy代理實例詳解

    這篇文章主要為大家詳細介紹了Python實現(xiàn)學(xué)生成績管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • element ui loading加載開啟與關(guān)閉方式

    element ui loading加載開啟與關(guān)閉方式

    這篇文章主要介紹了element ui loading加載開啟與關(guān)閉方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • vue router解決路由帶參數(shù)跳轉(zhuǎn)時出現(xiàn)404問題

    vue router解決路由帶參數(shù)跳轉(zhuǎn)時出現(xiàn)404問題

    我的頁面是從一個vue頁面router跳轉(zhuǎn)到另一個vue頁面,并且利用windows.open() 瀏覽器重新創(chuàng)建一個頁簽,但是不知道為什么有時候可以有時候又不行,所以本文給大家介紹了vue router解決路由帶參數(shù)跳轉(zhuǎn)時出現(xiàn)404問題,需要的朋友可以參考下
    2024-03-03
  • Vue中mixins的使用方法詳解

    Vue中mixins的使用方法詳解

    mixins是一種分發(fā) Vue 組件中可復(fù)用功能的使用方式,它是一個 js 對象,包含我們組件script中的任意功能選項,下面就跟隨小編一起來看看它的具體使用吧
    2024-03-03
  • Vue向后端傳數(shù)據(jù)后端接收為null問題及解決

    Vue向后端傳數(shù)據(jù)后端接收為null問題及解決

    這篇文章主要介紹了Vue向后端傳數(shù)據(jù)后端接收為null問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09

最新評論

鹤壁市| 潼南县| 凌云县| 平遥县| 周口市| 红原县| 华坪县| 商洛市| 聂荣县| 冷水江市| 宜兰市| 加查县| 华容县| 黎平县| 鄂州市| 武川县| 永宁县| 江津市| 四平市| 赤水市| 开封市| 正蓝旗| 吴堡县| 仙居县| 西城区| 宜宾县| 邯郸县| 新安县| 察雅县| 洪泽县| 静宁县| 牡丹江市| 和静县| 松阳县| 梁平县| 娄烦县| 铜鼓县| 隆尧县| 绥棱县| 普安县| 星座|