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 相关文章推荐
用javascript将数据库中的TEXT类型数据动态赋值到TEXTAREA中
Apr 20 Javascript
用js小类库获取浏览器的高度和宽度信息
Jan 15 Javascript
jQuery(js)获取文字宽度(显示长度)示例代码
Dec 31 Javascript
javascript中的nextSibling使用陷(da)阱(keng)
May 05 Javascript
Javascript+CSS实现影像卷帘效果思路及代码
Oct 20 Javascript
30个经典的jQuery代码开发技巧
Dec 15 Javascript
jQuery显示和隐藏 常用的状态判断方法
Jan 29 Javascript
jQuery zTree加载树形菜单功能
Feb 25 Javascript
jQuery属性选择器用法示例
Sep 09 Javascript
js导出excel文件的简洁方法(推荐)
Nov 02 Javascript
AngularJS自定义插件实现网站用户引导功能示例
Nov 07 Javascript
JS实现PC手机端和嵌入式滑动拼图验证码三种效果
Feb 15 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下通过curl抓取yahoo boss 搜索结果的实现代码
2011/06/10 PHP
PHP生成指定长度随机数最简洁的方法
2014/07/14 PHP
thinkphp文件处理类Dir.class.php的用法分析
2014/12/08 PHP
PHP中把对象转换为关联数组代码分享
2015/04/09 PHP
PHP数组游标实现对数组的各种操作详解
2016/01/26 PHP
php parse_str() 函数的定义和用法
2016/05/23 PHP
PHP基于socket实现的简单客户端和服务端通讯功能示例
2017/07/10 PHP
PHP实现的字符串匹配算法示例【sunday算法】
2017/12/19 PHP
div+css布局的图片连续滚动js实现代码
2010/05/04 Javascript
jquery $.getJSON()跨域请求
2011/12/21 Javascript
基于jquery ajax 用户无刷新登录方法详解
2012/04/28 Javascript
Javascript写入txt和读取txt文件示例
2014/02/12 Javascript
jquery实现倒计时代码分享
2014/06/13 Javascript
JavaScript 里的类数组对象
2015/04/08 Javascript
javascript日期处理函数,性能优化批处理
2015/09/06 Javascript
实现隔行换色效果的两种方式【实用】
2016/11/27 Javascript
几种tab切换详解
2017/02/03 Javascript
Vuex模块化实现待办事项的状态管理
2017/03/15 Javascript
VUE axios发送跨域请求需要注意的问题
2017/07/06 Javascript
angular 实时监听input框value值的变化触发函数方法
2018/08/31 Javascript
解决axios会发送两次请求,有个OPTIONS请求的问题
2018/10/25 Javascript
在NPM发布自己造的轮子的方法步骤
2019/03/09 Javascript
JavaScript This指向问题详解
2019/11/25 Javascript
JS猜数字游戏实例讲解
2020/06/30 Javascript
使用rpclib进行Python网络编程时的注释问题
2015/05/06 Python
Python解决抛小球问题 求小球下落经历的距离之和示例
2018/02/01 Python
python tkinter组件摆放方式详解
2019/09/16 Python
基于python的selenium两种文件上传操作实现详解
2019/09/19 Python
一款基于css3麻将筛子3D翻转特效的实例教程
2014/12/31 HTML / CSS
应届生服务员求职信
2013/10/31 职场文书
我的动漫时代的创业计划书范文
2014/01/27 职场文书
标准自荐信范文
2014/01/29 职场文书
《孙权劝学》教学反思
2014/04/23 职场文书
红领巾心向党演讲稿
2014/09/10 职场文书
个人年终总结怎么写
2015/03/09 职场文书
安全教育片观后感
2015/06/17 职场文书