Vuex之理解state的用法實(shí)例
1.什么是state?
上一篇文章說了,Vuex就是提供一個(gè)倉(cāng)庫,倉(cāng)庫里面放了很多對(duì)象。其中state就是數(shù)據(jù)源存放地,對(duì)應(yīng)于與一般Vue對(duì)象里面的data(后面講到的actions和mutations對(duì)應(yīng)于methods)。
響應(yīng)書存儲(chǔ):state里面存放的數(shù)據(jù)是響應(yīng)式的,Vue組件從store中讀取數(shù)據(jù),若是store中的數(shù)據(jù)發(fā)生改變,依賴這個(gè)數(shù)據(jù)的組件也會(huì)發(fā)生更新。(這里“狀態(tài)”=“數(shù)據(jù)”),也就是是說數(shù)據(jù)和視圖是同步的。
2.局部狀態(tài)
獲取:在Vue組件中獲取數(shù)據(jù),最直接的可以通過計(jì)算屬性中獲?。?br />
組件仍然可以保存局部狀態(tài):雖然說Vuex的Store倉(cāng)庫讓我們同一管理數(shù)據(jù)變得更加方便,但是代碼一多也會(huì)變得冗長(zhǎng),有些組件的數(shù)據(jù)是自己嚴(yán)格自用,我們可以將state放在組件自身,作為局部數(shù)據(jù),專供此組件使用,其他的組件不能用。
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ù)組的話,調(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 的點(diǎn)擊事件獲取當(dāng)前點(diǎn)擊的元素方法
今天小編就為大家分享一篇vue 的點(diǎn)擊事件獲取當(dāng)前點(diǎn)擊的元素方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-09-09
mpvue中配置vuex并持久化到本地Storage圖文教程解析
這篇文章主要介紹了mpvue中配置vuex并持久化到本地Storage的教程詳解,# 配置vuex和在vue中相同,只是mpvue有一個(gè)坑,就是不能直接在new Vue的時(shí)候傳入store。本文分步驟給大家介紹的非常詳細(xì),需要的朋友參考下吧2018-03-03
vue3父子組件傳值中props使用細(xì)節(jié)淺析
這篇文章主要給大家介紹了關(guān)于vue3父子組件傳值中props使用細(xì)節(jié)的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2022-03-03
vue-cli 默認(rèn)路由再子路由選中下的選中狀態(tài)問題及解決代碼
這篇文章主要介紹了vue-cli 默認(rèn)路由再子路由選中下的選中狀態(tài)問題及解決代碼,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-09-09
Vue 級(jí)聯(lián)下拉框的設(shè)計(jì)與實(shí)現(xiàn)
在前端開發(fā)中,級(jí)聯(lián)選擇框是經(jīng)常用到的,這樣不僅可以增加用戶輸入的友好性,還能減少前后端交互的數(shù)據(jù)量。本文就介紹一下使用Vue實(shí)現(xiàn)級(jí)聯(lián)下拉框,感興趣的可以了解一下2021-07-07
詳解如何在Vue項(xiàng)目中導(dǎo)出Excel
這篇文章主要介紹了如何在Vue項(xiàng)目中導(dǎo)出Excel,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04

