Vuex之理解state的用法實(shí)例
1.什么是state?
上一篇文章說(shuō)了,Vuex
就是提供一個(gè)倉(cāng)庫(kù),倉(cāng)庫(kù)里面放了很多對(duì)象。其中state
就是數(shù)據(jù)源存放地,對(duì)應(yīng)于與一般Vue
對(duì)象里面的data
(后面講到的actions
和mutations
對(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ō)Vuex
的Store
倉(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)文章
vue axios調(diào)用接口方法報(bào)錯(cuò)500 internal server err
前端使用axios 訪(fǎng)問(wèn)后端接口時(shí)報(bào)錯(cuò),在瀏覽器中點(diǎn)擊紅色的報(bào)錯(cuò)數(shù)據(jù),本文給大家分享vue axios調(diào)用接口方法報(bào)錯(cuò)500 internal server error的兩種解決方法,感興趣的朋友一起看看吧2023-10-10vue的.vue文件是怎么run起來(lái)的(vue-loader)
通過(guò)vue-loader,解析.vue文件,在webpack解析,拆解vue組件 ,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友參考下2018-12-12解決Vue @submit 提交后不刷新頁(yè)面問(wèn)題
這篇文章主要介紹了解決Vue @submit 提交后不刷新頁(yè)面問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-07-07Vue實(shí)現(xiàn)固定定位圖標(biāo)滑動(dòng)隱藏效果
移動(dòng)端頁(yè)面,有時(shí)候會(huì)出現(xiàn)一些固定定位在底部圖標(biāo),比如購(gòu)物車(chē)等。這篇文章主要介紹了Vue制作固定定位圖標(biāo)滑動(dòng)隱藏效果,需要的朋友可以參考下2019-05-05vue?router進(jìn)行路由跳轉(zhuǎn)并攜帶參數(shù)的實(shí)例詳解(params/query)
在使用`router.push`進(jìn)行路由跳轉(zhuǎn)到另一個(gè)組件時(shí),可以通過(guò)`params`或`query`來(lái)傳遞參數(shù),這篇文章主要介紹了vue?router進(jìn)行路由跳轉(zhuǎn)并攜帶參數(shù)(params/query),需要的朋友可以參考下2023-09-09vue計(jì)算屬性computed方法內(nèi)傳參方式
這篇文章主要介紹了vue計(jì)算屬性computed方法內(nèi)傳參方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-10-10詳解一次Vue低版本安卓白屏問(wèn)題的解決過(guò)程
這篇文章主要介紹了詳解一次Vue低版本安卓白屏問(wèn)題的解決過(guò)程,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-05-05vue.js?自定義指令(拖拽、拖動(dòng)、移動(dòng))?指令?v-drag詳解
這篇文章主要介紹了vue.js?自定義指令(拖拽、拖動(dòng)、移動(dòng))?指令?v-drag,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-01-01