Vuex中State的使用方法
前言
Vuex 使用單一狀態(tài)樹,用一個對象就包含了全部的應(yīng)用層級狀態(tài)。
這也意味著,每個應(yīng)用將僅僅包含一個 store 實例。
單一狀態(tài)樹讓我們能夠直接地定位任一特定的狀態(tài)片段,在調(diào)試的過程中也能輕易地取得整個當(dāng)前應(yīng)用狀態(tài)的快照。
一、在 Vue 組件中使用 Vuex
Vuex 通過 store 選項,提供了一種機(jī)制將狀態(tài)從根組件“注入”到每一個子組件中(需調(diào)用 Vue.use(Vuex)):
// 根組件 const app = new Vue({ el: '#app', // 把 store 對象提供給 “store” 選項, // 這可以把 store 的實例注入所有的子組件 store, components: { Counter }, template: ` <div class="app"> <counter></counter> </div> ` })
通過在根實例中注冊 store 選項,該 store 實例會注入到根組件下的所有子組件中,且子組件能通過 this.$store 訪問到。讓我們更新下 Counter 的實現(xiàn):
// 子組件 const Counter = { template: `<div>{{ count }}</div>`, computed: { count () { return this.$store.state.count } } }
二、mapState 輔助函數(shù) 使用Vuex
當(dāng)一個組件需要獲取多個狀態(tài)的時候,將這些狀態(tài)都聲明為計算屬性會有些重復(fù)和冗余。為了解決這個問題,我們可以使用 mapState 輔助函數(shù)幫助我們生成計算屬性。
// 在單獨構(gòu)建的版本中輔助函數(shù)為 Vuex.mapState import { mapState } from 'vuex' export default { data() { return { localCount: 1 } }, computed: mapState({ // 箭頭函數(shù)可使代碼更簡練 count: state => state.count, // 傳字符串參數(shù) 'count' 等同于 `state => state.count` countAlias: 'count', // 若想使用組件內(nèi) data 中定義的局部變量,必須使用常規(guī)函數(shù) countPlusLocalState (state) { return state.count + this.localCount } }) }
當(dāng)映射的計算屬性的名稱與 state 的子節(jié)點名稱相同時,我們也可以給 mapState 傳一個字符串?dāng)?shù)組。
// 映射 this.count 為 store.state.count // 使用時,按照計算屬性使用即可 this.count computed: mapState(['count'])
三、對象展開運算符
mapState 函數(shù)返回的是一個對象。我們?nèi)绾螌⑺c局部計算屬性混合使用呢?通常,我們需要使用一個工具函數(shù)將多個對象合并為一個,以使我們可以將最終對象傳給 computed 屬性。但是自從有了 對象展開運算符 ,我們可以極大地簡化寫法:
// 使用按照計算屬性用法 直接 this.count ,this.num // 插值表達(dá)式 {{ count }}, {{ num }} computed: { ...mapState(['count', 'num']) }
到此這篇關(guān)于Vuex中State的使用方法的文章就介紹到這了,更多相關(guān)Vuex中State內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue實現(xiàn)一個矩形標(biāo)記區(qū)域(rectangle marker)的方法
這篇文章主要介紹了vue實現(xiàn)一個矩形標(biāo)記區(qū)域 rectangle marker的方法,幫助大家實現(xiàn)區(qū)域標(biāo)記功能,感興趣的朋友可以了解下2020-10-10