Vue核心概念Getter的使用方法


Posted in Javascript onJanuary 18, 2019

有时候我们需要从store中的state中派生出一些状态。

如果有多个组件需要用到此属性,我们要么复制这个函数,或者抽取到一个共享函数然后在多处导入它——无论哪种方式都不是很理想。

Vuex 允许我们在store中定义getter属性(可以认为是 store 的计算属性)。就像计算属性一样,getter 的返回值会根据它的依赖被缓存起来,且只有当它的依赖值发生了改变才会被重新计算。

比如这里我们在Page4.vue里面需要对商品价格加倍,我们就可以使用Getter。

使用Getter

store.js,我们在state下面加入getters里面有一个商品价格加倍的方法。

// 在分离出来的vuex文件中安装 Vuex 
import Vue from 'vue' 
import Vuex from 'vuex' 
Vue.use(Vuex) 
// 每一个Vuex仓库中只能包含一个store实例
export const store = new Vuex.Store({ 
  state: { // 把页面显示数据写在store.js文件 
    goodsList: [ 
      { name: '赣州橙子', price: '8.8' }, 
      { name: '新疆哈密瓜', price: '2.0' }, 
      { name: '山东大枣', price: '3.2' }, 
      { name: '阳澄湖大闸蟹', price: '10.0' } 
    ] 
  },
  // getters是vuex中的计算属性对象
  getters: {
    //商品价格加倍;其中goodsPriceDoubble(state)中有一个state参数表示state中的数据对象
    goodsPriceDoubble: state => {
      let goodsPriceDoubble = state.goodsList.map(currentValue => {
        return {
          name: currentValue.name,
          price: currentValue.price *2
        }
      })
      return goodsPriceDoubble;
    }
  }
})

在page4.vue里面修改成如下:

<ul class="ul_list">
      <li v-for="item in goodsPriceTwo">
        <p class="name">商品:{{item.name}}</p>
        <p class="price">价格:¥{{item.price}}</p>
      </li>
    </ul>

在computed中加入如下方法:

computed: {
     goodsPriceTwo() {
       //this.$store.getters.vuex getters中的对应的回调函数的函数名
       return this.$store.getters.goodsPriceDoubble;
    }
   }

显示效果就是page4的商品价格加倍了。

Vue核心概念Getter的使用方法

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。如果你想了解更多相关内容请查看下面相关链接

Javascript 相关文章推荐
IE6 fixed的完美解决方案
Mar 31 Javascript
Jquery:ajax实现翻页无刷新功能代码
Aug 05 Javascript
Javascript 构造函数详解
Oct 22 Javascript
javascript面向对象之共享成员属性与方法及prototype关键字用法
Jan 13 Javascript
基于JavaScript代码实现pc与手机之间的跳转
Dec 23 Javascript
AngularJS $injector 依赖注入详解
Sep 14 Javascript
从零开始搭建一个react项目开发
Feb 09 Javascript
React组件对子组件children进行加强的方法
Jun 23 Javascript
JS中如何轻松遍历对象属性的方式总结
Aug 06 Javascript
vue滑动吸顶及锚点定位的示例代码
May 10 Javascript
antd vue table跨行合并单元格,并且自定义内容实例
Oct 28 Javascript
微信小程序实现倒计时功能
Nov 19 Javascript
Vue唯一可以更改vuex实例中state数据状态的属性对象Mutation的讲解
Jan 18 #Javascript
JavaScript数据结构之栈实例用法
Jan 18 #Javascript
Vue核心概念Action的总结
Jan 18 #Javascript
js取小数点后两位四种方法
Jan 18 #Javascript
jQuery移动端跑马灯抽奖特效升级版(抽奖概率固定)实现方法
Jan 18 #jQuery
jquery获取file表单选择文件的路径、名字、大小、类型
Jan 18 #jQuery
jQuery实现适用于移动端的跑马灯抽奖特效示例
Jan 18 #jQuery
You might like
php检查是否是ajax请求的方法
2015/04/16 PHP
PHP简单实现生成txt文件到指定目录的方法
2016/04/25 PHP
PHP分页初探 一个最简单的PHP分页代码的简单实现
2016/06/21 PHP
PHP简单读取xml文件的方法示例
2017/04/20 PHP
用js实现计算加载页面所用的时间
2010/04/02 Javascript
解决用jquery load加载页面到div时,不执行页面js的问题
2014/02/22 Javascript
js单词形式的运算符
2014/05/06 Javascript
Javascript 构造函数详解
2014/10/22 Javascript
jQuery ready()和onload的加载耗时分析
2016/09/08 Javascript
jQuery实现发送验证码并60秒倒计时功能
2016/11/25 Javascript
浅析Vue自定义组件的v-model
2017/11/26 Javascript
浅谈es6中export和export default的作用及区别
2018/02/07 Javascript
Vue点击切换Class变化,实现Active当前样式操作
2020/07/17 Javascript
vue实现打地鼠小游戏
2020/08/21 Javascript
[44:41]Fnatic vs Liquid 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python作用域用法实例详解
2016/03/15 Python
Python过滤列表用法实例分析
2016/04/29 Python
TensorFlow实现卷积神经网络
2018/05/24 Python
Django 连接sql server数据库的方法
2018/06/30 Python
Python实现快速傅里叶变换的方法(FFT)
2018/07/21 Python
python3使用matplotlib绘制散点图
2019/03/19 Python
使用pyinstaller逆向.pyc文件
2019/12/20 Python
深入了解如何基于Python读写Kafka
2019/12/31 Python
TensorFlow基本的常量、变量和运算操作详解
2020/02/03 Python
实例教程 纯CSS3打造非常炫的加载动画效果
2014/11/05 HTML / CSS
css3中less实现文字长阴影(long shadow)
2020/04/24 HTML / CSS
伦敦一卡通:The London Pass
2018/11/30 全球购物
法国在线药房:DoctiPharma
2020/10/21 全球购物
描述一下JVM加载class文件的原理机制
2013/12/08 面试题
医院院务公开实施方案
2014/05/03 职场文书
会计毕业生自荐书
2014/06/12 职场文书
全国法制宣传日活动总结
2015/05/05 职场文书
社区干部培训心得体会
2016/01/06 职场文书
2019年国庆祝福语(70句)
2019/09/19 职场文书
java解析XML详解
2021/07/09 Java/Android
深入理解CSS 中 transform matrix矩阵变换问题
2021/08/30 HTML / CSS