亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

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

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

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

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

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

3.永久性:當(dāng)刷新頁(yè)面時(shí)vuex存儲(chǔ)的值會(huì)丟失,localstorage不會(huì)。

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

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

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

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

const state = {
 imgInfo:null //首頁(yè)頭像信息

}

2.mutations里面存儲(chǔ)localstorage的信息。Mutations可以更改狀態(tài),本質(zhì)就是用來(lái)處理數(shù)據(jù)的函數(shù),其接收唯一參數(shù)值state。定義的mutation必須是同步函數(shù)。this.$store.commit(mutationName)是用來(lái)觸發(fā)一個(gè)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。通過(guò)this.$store.getters.valueName對(duì)派生出來(lái)的狀態(tài)進(jìn)行訪問(wèn)?;蛘咧苯邮褂幂o助函數(shù)mapGetters將其映射到本地計(jì)算屬性中去。

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

4.在需要對(duì)storage進(jìn)行操作的頁(yè)面引用mapMutations函數(shù)

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

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

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

6.模板中對(duì)vuex的值的引用

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

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

相關(guān)文章

  • 在vue中更換字體,本地存儲(chǔ)字體非引用在線字體庫(kù)的方法

    在vue中更換字體,本地存儲(chǔ)字體非引用在線字體庫(kù)的方法

    今天小編就為大家分享一篇在vue中更換字體,本地存儲(chǔ)字體非引用在線字體庫(kù)的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-09-09
  • vue清除瀏覽器全部cookie的問(wèn)題及解決方法(絕對(duì)有效!)

    vue清除瀏覽器全部cookie的問(wèn)題及解決方法(絕對(duì)有效!)

    最近項(xiàng)目要實(shí)現(xiàn)關(guān)閉瀏覽器清除用戶緩存的功能,下面這篇文章主要給大家介紹了關(guān)于vue清除瀏覽器全部cookie的問(wèn)題及解決方法,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-06-06
  • 基于Vue實(shí)現(xiàn)關(guān)鍵詞實(shí)時(shí)搜索高亮顯示關(guān)鍵詞

    基于Vue實(shí)現(xiàn)關(guān)鍵詞實(shí)時(shí)搜索高亮顯示關(guān)鍵詞

    這篇文章主要介紹了基于Vue實(shí)現(xiàn)關(guān)鍵詞實(shí)時(shí)搜索高亮顯示關(guān)鍵詞,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-07-07
  • vue實(shí)現(xiàn)下拉菜單樹(shù)

    vue實(shí)現(xiàn)下拉菜單樹(shù)

    這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)下拉菜單樹(shù),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-10-10
  • vue-cli3打包時(shí)圖片壓縮處理方式

    vue-cli3打包時(shí)圖片壓縮處理方式

    這篇文章主要介紹了vue-cli3打包時(shí)圖片壓縮處理方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • vue中使用protobuf的過(guò)程記錄

    vue中使用protobuf的過(guò)程記錄

    由于目前公司采用了ProtoBuf做前后端數(shù)據(jù)交互,進(jìn)公司以來(lái)一直用的是公司大神寫(xiě)好的基礎(chǔ)庫(kù),完全不了解底層是如何解析的。下面小編給大家分享vue中使用protobuf的過(guò)程記錄,需要的朋友參考下吧
    2018-10-10
  • Vue中實(shí)現(xiàn)權(quán)限控制的方法示例

    Vue中實(shí)現(xiàn)權(quán)限控制的方法示例

    這篇文章主要介紹了Vue中實(shí)現(xiàn)權(quán)限控制的方法示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-06-06
  • vue寫(xiě)一個(gè)組件

    vue寫(xiě)一個(gè)組件

    這篇文章主要介紹了vue組寫(xiě)一個(gè)組件,需要的朋友可以參考下
    2018-04-04
  • 詳解如何在Vue2中實(shí)現(xiàn)組件props雙向綁定

    詳解如何在Vue2中實(shí)現(xiàn)組件props雙向綁定

    在Vue2中組件的props的數(shù)據(jù)流動(dòng)改為了只能單向流動(dòng),如何在Vue2中實(shí)現(xiàn)組件props雙向綁定 ,一起來(lái)跟小編看看。
    2017-03-03
  • vue如何通過(guò)點(diǎn)擊事件彈出彈窗頁(yè)面詳解

    vue如何通過(guò)點(diǎn)擊事件彈出彈窗頁(yè)面詳解

    彈窗是我們開(kāi)發(fā)中經(jīng)常遇到的一個(gè)功能,下面這篇文章主要給大家介紹了關(guān)于vue如何通過(guò)點(diǎn)擊事件彈出彈窗頁(yè)面的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-06-06

最新評(píng)論