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

Vuex之理解state的用法實(shí)例

 更新時(shí)間:2017年04月19日 15:02:39   作者:何凱  
本篇文章主要介紹了Vuex之理解state的用法實(shí)例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

1.什么是state?

上一篇文章說(shuō)了,Vuex就是提供一個(gè)倉(cāng)庫(kù),倉(cāng)庫(kù)里面放了很多對(duì)象。其中state就是數(shù)據(jù)源存放地,對(duì)應(yīng)于與一般Vue對(duì)象里面的data(后面講到的actionsmutations對(duì)應(yīng)于methods)。

響應(yīng)書(shū)存儲(chǔ):state里面存放的數(shù)據(jù)是響應(yīng)式的,Vue組件從store中讀取數(shù)據(jù),若是store中的數(shù)據(jù)發(fā)生改變,依賴(lài)這個(gè)數(shù)據(jù)的組件也會(huì)發(fā)生更新。(這里“狀態(tài)”=“數(shù)據(jù)”),也就是是說(shuō)數(shù)據(jù)和視圖是同步的。

2.局部狀態(tài)

獲取:在Vue組件中獲取數(shù)據(jù),最直接的可以通過(guò)計(jì)算屬性中獲取;

組件仍然可以保存局部狀態(tài):雖然說(shuō)VuexStore倉(cāng)庫(kù)讓我們同一管理數(shù)據(jù)變得更加方便,但是代碼一多也會(huì)變得冗長(zhǎng),有些組件的數(shù)據(jù)是自己嚴(yán)格自用,我們可以將state放在組件自身,作為局部數(shù)據(jù),專(zhuān)供此組件使用,其他的組件不能用。

3.mapState

mapState的作用是把全局的 state getters 映射到當(dāng)前組件的 computed 計(jì)算屬性中,this.$store.state。

使用示例

 import {mapState} from 'vuex' 
 export default {
 computer :
 mapState({
  count: state => state.count,
  'count' // 映射 this.count 為 store.state.count
 })
}

看看源碼

export function mapState (states) {
  const res = {}  //定義一個(gè)對(duì)象
  normalizeMap(states).forEach(({ key, val }) => {
  // normalizeMap()函數(shù)初始化states數(shù)據(jù)
     res[key] = function mappedState () {
      return typeof val === 'function'
      // 判斷val是否是函數(shù)
      ? val.call(this, this.$store.state, this.$store.getters)
      // 若val是函數(shù),將store的state和getters作為參數(shù),返回值作為mapped State的返回值
      : this.$store.state[val]}})
    return res // 返回的是一個(gè)函數(shù)
  }
//初始化方法 
 function normalizeMap (map) {
    return Array.isArray(map) //判斷state是否是數(shù)組
    ? map.map(key => ({ key, val: key }))
    // 是數(shù)組的話(huà),調(diào)用map方法,將每一個(gè)數(shù)組元素轉(zhuǎn)換成{key,val:key}
    : Object.keys(map).map(key => ({ key, val: map[key] }))
    // 否則就是對(duì)象,遍歷對(duì)象,將每一個(gè)val變成val:key
  }

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

相關(guān)文章

最新評(píng)論