Vuex之理解state的用法實例
1.什么是state?
上一篇文章說了,Vuex
就是提供一個倉庫,倉庫里面放了很多對象。其中state
就是數(shù)據(jù)源存放地,對應(yīng)于與一般Vue
對象里面的data
(后面講到的actions
和mutations
對應(yīng)于methods
)。
響應(yīng)書存儲:state
里面存放的數(shù)據(jù)是響應(yīng)式的,Vue
組件從store
中讀取數(shù)據(jù),若是store
中的數(shù)據(jù)發(fā)生改變,依賴這個數(shù)據(jù)的組件也會發(fā)生更新。(這里“狀態(tài)”=“數(shù)據(jù)”),也就是是說數(shù)據(jù)和視圖是同步的。
2.局部狀態(tài)
獲?。涸?code>Vue組件中獲取數(shù)據(jù),最直接的可以通過計算屬性中獲?。?br />
組件仍然可以保存局部狀態(tài):雖然說Vuex
的Store
倉庫讓我們同一管理數(shù)據(jù)變得更加方便,但是代碼一多也會變得冗長,有些組件的數(shù)據(jù)是自己嚴(yán)格自用,我們可以將state
放在組件自身,作為局部數(shù)據(jù),專供此組件使用,其他的組件不能用。
3.mapState
mapState
的作用是把全局的 state
和 getters
映射到當(dāng)前組件的 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()函數(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 // 返回的是一個函數(shù) } //初始化方法 function normalizeMap (map) { return Array.isArray(map) //判斷state是否是數(shù)組 ? map.map(key => ({ key, val: key })) // 是數(shù)組的話,調(diào)用map方法,將每一個數(shù)組元素轉(zhuǎn)換成{key,val:key} : Object.keys(map).map(key => ({ key, val: map[key] })) // 否則就是對象,遍歷對象,將每一個val變成val:key }
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
vue axios調(diào)用接口方法報錯500 internal server err
前端使用axios 訪問后端接口時報錯,在瀏覽器中點擊紅色的報錯數(shù)據(jù),本文給大家分享vue axios調(diào)用接口方法報錯500 internal server error的兩種解決方法,感興趣的朋友一起看看吧2023-10-10vue的.vue文件是怎么run起來的(vue-loader)
通過vue-loader,解析.vue文件,在webpack解析,拆解vue組件 ,本文通過實例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友參考下2018-12-12vue?router進(jìn)行路由跳轉(zhuǎn)并攜帶參數(shù)的實例詳解(params/query)
在使用`router.push`進(jìn)行路由跳轉(zhuǎn)到另一個組件時,可以通過`params`或`query`來傳遞參數(shù),這篇文章主要介紹了vue?router進(jìn)行路由跳轉(zhuǎn)并攜帶參數(shù)(params/query),需要的朋友可以參考下2023-09-09vue.js?自定義指令(拖拽、拖動、移動)?指令?v-drag詳解
這篇文章主要介紹了vue.js?自定義指令(拖拽、拖動、移動)?指令?v-drag,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-01-01