国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

Vuex之理解state的用法實例

2019-11-19 16:47:30
字體:
來源:轉載
供稿:網友

1.什么是state?

上一篇文章說了,Vuex就是提供一個倉庫,倉庫里面放了很多對象。其中state就是數據源存放地,對應于與一般Vue對象里面的data(后面講到的actionsmutations對應于methods)。

響應書存儲:state里面存放的數據是響應式的,Vue組件從store中讀取數據,若是store中的數據發生改變,依賴這個數據的組件也會發生更新。(這里“狀態”=“數據”),也就是是說數據和視圖是同步的。

2.局部狀態

獲取:在Vue組件中獲取數據,最直接的可以通過計算屬性中獲取;

組件仍然可以保存局部狀態:雖然說VuexStore倉庫讓我們同一管理數據變得更加方便,但是代碼一多也會變得冗長,有些組件的數據是自己嚴格自用,我們可以將state放在組件自身,作為局部數據,專供此組件使用,其他的組件不能用。

3.mapState

mapState的作用是把全局的 state getters 映射到當前組件的 computed 計算屬性中,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 = {}  //定義一個對象  normalizeMap(states).forEach(({ key, val }) => {  // normalizeMap()函數初始化states數據     res[key] = function mappedState () {      return typeof val === 'function'      // 判斷val是否是函數      ? val.call(this, this.$store.state, this.$store.getters)      // 若val是函數,將store的state和getters作為參數,返回值作為mapped State的返回值      : this.$store.state[val]}})    return res // 返回的是一個函數  }//初始化方法  function normalizeMap (map) {    return Array.isArray(map) //判斷state是否是數組    ? map.map(key => ({ key, val: key }))    // 是數組的話,調用map方法,將每一個數組元素轉換成{key,val:key}    : Object.keys(map).map(key => ({ key, val: map[key] }))    // 否則就是對象,遍歷對象,將每一個val變成val:key  }

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 上高县| 鹤山市| 天津市| 宝山区| 元阳县| 揭东县| 莱西市| 綦江县| 阿瓦提县| 吉首市| 尚志市| 泸定县| 凭祥市| 大姚县| 四会市| 崇明县| 甘孜| 县级市| 高邮市| 乡宁县| 诏安县| 吉林市| 平顶山市| 怀宁县| 武鸣县| 白银市| 无为县| 汉川市| 秀山| 务川| 巴塘县| 定陶县| 胶南市| 霍州市| 正定县| 南雄市| 凤山市| 凤山市| 牙克石市| 济南市| 金华市|