Vuex中Getters的使用详解:从基础概念到源码解析
创作时间:
作者:
@小白创作中心
Vuex中Getters的使用详解:从基础概念到源码解析
引用
1
来源
1.
http://www.cdweb.net/article/pgsjjg.html
Vuex中的Getters是一个非常重要的概念,它类似于组件中的计算属性,用于对state中的数据进行处理和过滤。本文将从Getters的基础概念出发,详细介绍其使用方法,并深入分析其源码实现。
1. 什么是Getters
在Vuex中,state
用于存放数据,如果需要对数据进行处理和输出,比如数据过滤,通常可以在组件的computed
属性中进行处理。但是,如果多个组件都需要使用同一个过滤后的数据,比如饼状图组件和曲线图组件,那么将这个数据处理逻辑抽离出来并共享就显得尤为重要。这就是getters
存在的意义。我们可以将getters
理解为store
的计算属性。
2. 如何使用Getters
定义Getters
我们可以在store
中定义getters
,其第一个参数是state
。例如:
const getters = {
style: state => state.style
}
传递参数
定义的Getters
会暴露为store.getters
对象,同时也可以接受其他的getters
作为第二个参数:
computed: {
doneTodosCount () {
return this.$store.getters.doneTodosCount
}
}
3. 使用mapGetters辅助函数
mapGetters
辅助函数可以将store
中的getters
映射到局部计算属性中,用法与mapState
类似:
import { mapGetters } from 'vuex'
computed: {
// 使用对象展开运算符将 getters 混入 computed 对象中
...mapGetters([
'doneTodosCount',
'anotherGetter',
])
}
// 给getter属性换名字
mapGetters({
// 映射 this.doneCount 为 store.getters.doneTodosCount
doneCount: 'doneTodosCount'
})
4. 源码分析
wrapGetters
函数用于初始化getters
,它接受3个参数:store
(当前的Store
实例)、moduleGetters
(当前模块下所有的getters
)和modulePath
(对应模块的路径):
function wrapGetters(store, moduleGetters, modulePath) {
Object.keys(moduleGetters).forEach(getterKey => {
const rawGetter = moduleGetters[getterKey]
if (store._wrappedGetters[getterKey]) {
console.error(`[vuex] duplicate getter key: ${getterKey}`)
return
}
store._wrappedGetters[getterKey] = function wrappedGetter(store) {
return rawGetter(
getNestedState(store.state, modulePath), // local state
store.getters, // store上所有的getters
store.state // root state
)
}
})
}
// 根据path查找state上嵌套的state
function getNestedState(state, path) {
return path.length
? path.reduce((state, key) => state[key], state)
: state
}
以上就是Vuex中Getters的全部内容,希望对大家的学习有所帮助。
热门推荐
桐梓:校园体育活动“加时” 助力学生健康成长
睡前锻练,等于白练?医生再三提醒:一天这时间锻炼才最好
鼻塞喉痛感冒怎么办
深入理解Argo CD工作原理
建筑工地安全责任落实措施
仙鹤衔茶,帝子垂青——君山银针传说
豪血寺一族1是哪部作品?它是如何崛起的?
打造强劲腿部力量:健身达人教你杠铃深蹲的专业技巧和必备装备
做深蹲可以瘦哪里
从考古到向公众阐释——“秦始皇陵考古发现展”的策展实践与思考
车被撞后面怎么查看
如何准备产品经理的面试
数据流图概述
“数据流图”是什么,5分钟带你详细了解?
血常规白细胞偏低是什么情况
解密稀土:从稀有元素到现代科技支柱
怎样做甜米酒好喝又简单
中国传统文化中的六艺八雅,你知道几个?
【长征小故事】巧渡金沙江
首发经济,为啥这么火?
MRP系统是什么?详解物料需求计划系统的概念与应用
高二学生的语文写作如何提高?
你是什么身材,就选什么裙子,梨形身材的女性很适合第一种!
《玫瑰的故事》:行气解郁,和血养颜,玫瑰可不止“恋爱脑”
浙江省哪个市最富?浙江省各市经济实力排名
脾虚艾灸哪里效果最好?艾灸时要注意哪些问题?
一次艾灸多少分钟为好
公司增值税是什么意思
鸿蒙——即将是国内全部物联网的搭载系统
《雄狮少年2》坚持初心:口碑载道,票房却未达预期,或面临近2亿亏损