Vuex之理解Getters的用法实例


Posted in Javascript onApril 19, 2017

1.什么是getters

在介绍state中我们了解到,在Store仓库里,state就是用来存放数据,若是对数据进行处理输出,比如数据要过滤,一般我们可以写到computed中。但是如果很多组件都使用这个过滤后的数据,比如饼状图组件和曲线图组件,我们是否可以把这个数据抽提出来共享?这就是getters存在的意义。我们可以认为,【getters】是store的计算属性。

2.如何使用

定义:我们可以在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当前模块下所有的gettersmodulePath对应模块的路径

function `wrapGetters` (store, moduleGetters, modulePath) {
   Object.keys(moduleGetters).forEach(getterKey => {
      // 遍历先所有的getters
    const rawGetter = moduleGetters[getterKey]
    if (store._wrappedGetters[getterKey]) {
     console.error(`[vuex] duplicate getter key: ${getterKey}`)
      // getter的key不允许重复,否则会报错
     return
    }
    store._wrappedGetters[getterKey] = function `wrappedGetter` (store{
      // 将每一个getter包装成一个方法,并且添加到store._wrappedGetters对象中,
      return rawGetter(
       //执行getter的回调函数,传入三个参数,(local state,store getters,rootState)
      getNestedState(store.state, modulePath), // local state
       //根据path查找state上嵌套的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}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JS 精确统计网站访问量的实例代码
Jul 05 Javascript
jquery.qrcode在线生成二维码使用示例
Aug 21 Javascript
Javascript Memoizer浅析
Oct 16 Javascript
在JavaScript应用中实现延迟加载的方法
Jun 25 Javascript
JavaScript实现的Tween算法及缓冲特效实例代码
Nov 03 Javascript
JavaScript代码实现左右上下自动晃动自动移动
Apr 08 Javascript
Bootstrap 折叠(Collapse)插件用法实例详解
Jun 01 Javascript
vue.js指令v-for使用及索引获取
Nov 03 Javascript
Vue中父组件向子组件通信的方法
Jul 11 Javascript
JavaScript使用math.js进行精确计算操作示例
Jun 19 Javascript
微信小程序中如何计算距离某个节日还有多少天
Jul 15 Javascript
angular8.5集成TinyMce5的使用和详细配置(推荐)
Nov 16 Javascript
Vuex之理解state的用法实例
Apr 19 #Javascript
微信小程序 聊天室简单实现
Apr 19 #Javascript
Vuex之理解Store的用法
Apr 19 #Javascript
微信小程序 判断手机号的实现代码
Apr 19 #Javascript
Vuex简单入门
Apr 19 #Javascript
微信小程序 滚动到某个位置添加class效果实现代码
Apr 19 #Javascript
微信小程序 slider的简单实例
Apr 19 #Javascript
You might like
如何使用PHP中的字符串函数
2006/10/09 PHP
用PHP来写记数器(详细介绍)
2006/10/09 PHP
PHP微信发送推送消息乱码的解决方法
2019/02/28 PHP
PHP如何实现阿里云短信sdk灵活应用在项目中的方法
2019/06/14 PHP
Javascript的IE和Firefox兼容性汇编
2006/07/01 Javascript
JSONP跨域GET请求解决Ajax跨域访问问题
2014/12/31 Javascript
jQuery实现鼠标滑过Div层背景变颜色的方法
2015/02/17 Javascript
详解javascript实现瀑布流列式布局
2016/01/29 Javascript
javascript截图 jQuery插件imgAreaSelect使用详解
2016/05/04 Javascript
js无法获取到html标签的属性的解决方法
2016/07/26 Javascript
AngularJS 入门教程之事件处理器详解
2016/08/19 Javascript
JS实现页面中所有img对象添加onclick事件及新窗口查看图片的方法
2016/12/27 Javascript
jQuery实现简单的下拉菜单导航功能示例
2017/12/07 jQuery
vue-cli2.9.3 详细教程
2018/04/23 Javascript
Angular5中调用第三方库及jQuery的添加的方法
2018/06/07 jQuery
深入理解Vue父子组件生命周期执行顺序及钩子函数
2018/08/12 Javascript
node.js使用 http-proxy 创建代理服务器操作示例
2020/02/10 Javascript
js实现简单扫雷
2020/11/27 Javascript
用Python设计一个经典小游戏
2017/05/15 Python
python 禁止函数修改列表的实现方法
2017/08/03 Python
Python协程操作之gevent(yield阻塞,greenlet),协程实现多任务(有规律的交替协作执行)用法详解
2019/10/14 Python
Tensorflow限制CPU个数实例
2020/02/06 Python
Python动态导入模块和反射机制详解
2020/02/18 Python
如何将Pycharm中调整字体大小的方式设置为"ctrl+鼠标滚轮上下滑"
2020/11/17 Python
萨克斯第五大道精品百货店: Saks Fifth Avenue
2017/04/28 全球购物
李宁官方网店:中国运动品牌
2017/11/02 全球购物
美国在线鞋类零售商:LifeStride
2019/06/09 全球购物
英国购买威士忌网站:Master of Malt
2019/09/26 全球购物
Java的for语句中break, continue和return的区别
2013/12/19 面试题
电子商务专业学生的学习自我评价
2013/10/27 职场文书
本科毕业生的求职信范文
2013/11/20 职场文书
内衣营销方案
2014/03/15 职场文书
售后客服工作职责
2014/06/16 职场文书
推普周国旗下讲话稿
2014/09/21 职场文书
学校党的群众路线教育实践活动总结材料
2014/10/30 职场文书
2016年元旦寄语
2015/08/17 职场文书