理解Vuex的辅助函数mapState

简介: 理解Vuex的辅助函数mapState

参考的地址是: https://www.cnblogs.com/tugenhua0707/p/9794423.html


之所以会在这里记录下来,是为了方便自己以后忘记的时候查看学习而已~;


并没有别的意思~;


如果想看详细版本


去这里:https://www.cnblogs.com/tugenhua0707/p/9794423.html


作者写的很详细的~


当我们的组件需要获取多个状态的时候,


将这些状态都声明为计算属性会有些重复和冗余,为了解决这个问题,


我们可以使用mapState的辅助函数来帮助我们生成计算属性。


mapState函数返回的是一个对象,


我们需要使用一个工具函数将多个对象合并为一个,


这样就可以使我们将最终对象传给computed属性。


store/state.js 代码如下:


export default {
  add: 0,
  errors: '',
  counts: 0
};


store/mutations.js 代码如下:


import * as types from './mutations-types';
export default {
  [types.ADD] (state, payload) {
    state.add = payload;
  },
  [types.SETERROR] (state, payload) {
    state.errors = payload;
  },
  [types.COUNTASYNC] (state, payload) {
    state.counts = payload;
  }
}


store/mutations-types.js 代码如下:


// 新增list
export const ADD = 'ADD'; 
// 设置错误提示
export const SETERROR = 'SETERROR';
// 异步操作count
export const COUNTASYNC = 'COUNTASYNC';


store/index.js 代码如下:


import Vue from 'vue'
import Vuex from 'vuex'
import state from './state'
import mutations from './mutations'
import * as getters from './getters'
import * as actions from './actions'
Vue.use(Vuex)
export default new Vuex.Store({ 
    state,
    mutations,
    actions,
    getters
});


home.vue 在mounted生命周期打印一下 console.log(this);


<template>
  <div></div>
</template>
<script type="text/javascript">
  export default {
    data() {
      return {
      }
    },
    methods: {
    },
    mounted() {
      console.log(this);
    }
  }
</script>



1425695-20200925094421420-1506787761.png


如上代码,我们使用 mapState工具函数会将store中的state映射到局部计算属性中。


我们在mounted方法内,直接使用 this.xx 即可使用到对应computed中对应的属性了。


也就是 我们使用 this.add 就直接映射到 this.$store.state.add 了 。


当然mapState也可以接受一个数组,如下简单代码:


computed: {
  /*
  ...mapState({
    add: state => state.add,
    counts: state => state.counts
  })
  */
  ...mapState([
    'add',
    'counts'
  ])
},
mounted() {
  console.log(this);
}


1425695-20200925094620085-1740313518.png


可以看到,接受数组也是可以的,在mounted生命周期内,我们直接可以使用 this.add 或 this.counts 可以获取到值了。


切记:mapState的属性的时候,一定要和state的属性值相对应,也就是说 state中定义的属性值叫add,那么mapState就叫add,如果我们改成add2的话,就获取不到add的值了



相关文章
|
消息中间件 存储 XML
Kettle实现rabbitMQ的生产与消费
文章目录 一、Kettle为什么可以读取流数据? 二、rabbitMQ中启动MQTT插件并创建队列和路由键 三、Kettle实现rabbitMQ的生产与消费 Kettle是一款非常强大的ETL工具,不仅可以使用图形化界面,还可以处理各种数据,今天记录一下本人使用Kettle中MQTT组件来实现从rabbitMQ中读取流数据,并进行解析和处理。 提示:以下是本篇文章正文内容,下面案例可供参考
|
XML 移动开发 API
微信支付开发(7) H5支付
关键字:微信支付 微信支付v3 H5支付 wap支付 prepay_id 作者:方倍工作室原文: http://www.cnblogs.com/txw1958/p/wxpayv3_h5.html    本文介绍微信支付下的H5支付实现流程。
3772 1
|
JSON JavaScript 数据格式
Elementui Tree 树形控件删除子节点
Elementui Tree 树形控件删除子节点
377 1
|
8月前
|
人工智能 搜索推荐 数据处理
简历诊断与面试指导:学校用AI开出“数字处方”,生成式人工智能(GAI)认证助力学生求职
本文探讨了人工智能(AI)技术在教育领域的应用,特别是学校如何利用AI进行简历诊断与面试指导,帮助学生提升求职竞争力。同时,生成式人工智能(GAI)认证的引入填补了技能认证空白,为学生职业发展提供权威背书。AI的个性化服务与GAI认证的权威性相辅相成,助力学生在数字化时代更好地应对求职挑战,实现职业目标。文章还展望了AI技术与GAI认证在未来持续推动学生成长的重要作用。
|
8月前
|
NoSQL Java 数据库连接
微服务——MongoDB实战演练——技术选型
本节主要介绍技术选型中的两个重要工具:**mongodb-driver** 和 **SpringDataMongoDB**。其中,mongodb-driver 是 MongoDB 官方提供的 Java 驱动包,用于连接和操作 MongoDB 数据库,功能类似 JDBC 驱动。通过官方示例可快速上手。而 SpringDataMongoDB 是 Spring 生态的一员,封装了 mongodb-driver,提供了更简洁的 API,方便开发者在 Spring 环境中操作 MongoDB。两者各有优势,可根据实际需求选择合适的技术方案。
148 2
|
JavaScript 前端开发
Vue学习之--------Vue中收集表单数据(使用v-model 实现双向数据绑定、代码实现)(2022/7/18)
这篇文章介绍了Vue中使用v-model实现表单数据收集的方法,包括基础知识、代码实例和测试效果,并提供了一些额外建议。
Vue学习之--------Vue中收集表单数据(使用v-model 实现双向数据绑定、代码实现)(2022/7/18)
|
机器学习/深度学习 算法 测试技术
PYTHON用LSTM长短期记忆神经网络的参数优化方法预测时间序列洗发水销售数据
PYTHON用LSTM长短期记忆神经网络的参数优化方法预测时间序列洗发水销售数据
|
数据可视化 Java
《IntelliJ IDEA 插件开发》第二节:开发摸鱼看书的侧边栏窗体
一、说明 二、需求目的 三、案例开发 1. 工程结构 2. 创建 UI 窗体 3. ToolWindow 工具框 4. Configurable 配置框 5. 配置 plugin.xml 四、插件测试 五、总结 六、系列推荐
1394 0
《IntelliJ IDEA 插件开发》第二节:开发摸鱼看书的侧边栏窗体
|
程序员 C# 开发框架
深入解析C#中的语法糖
本文将详细探讨C#编程语言中的“语法糖”概念,解释其含义、作用以及在日常编程实践中的常见例子。通过本文,读者将能够更深入地理解C#语言的灵活性和便捷性,并学会如何有效利用语法糖提高代码的可读性和开发效率。