vuex(三)之辅助函数

简介: vuex(三)之辅助函数

一、mapState

当一个组件需要获取多个状态的时候,通过this.$store.state来声明就会显得有些重复跟冗余,通过mapState这个辅助函数可以帮助生成计算属性。
在store文件中定义state

//  store.js存放数据
state:{
    number1:1,
    number2:2
}

如何使用

//方式一(不推荐)
<template>
    {{$store.state.number1}}
    {{$store.state.number2}}
</template>
//方式二(计算属性)
<template>
    {{number1}}{{number2}}
</template>
computed:{
    number1(){
      return this.$store.state.number1
    },
    number2(){
      return this.$store.state.number2
    }
}
//方式三(辅助函数)
//在组件中使用mapState,放置在computed里面。
//项目中常用的方式
// App.vue
<template>
  <div>
    <h1>{{number1}}</h1>
    <h1>{{number2}}</h1>
  </div>
</template>
import { mapState } from 'vuex'
export default{
    computed:{
        ...mapState(['number1','number2']) // 在组件通过this就可调用,不用再写this.$store.state
        // ...mapState({ 另一种写法
        //   number1: state=>state.number1,
        //   number2: state=>state.number2
        // }),
    }
}

二、mapGetters

//方式一(不推荐)
<template>
    {{$store.getters.GET_BOOK_NUM}}
</template>
//方式二(计算属性)
<template>
    {{GET_BOOK_NUM}}
</template>
computed:{
    GET_BOOK_NUM(){
      return this.$store.getters.GET_BOOK_NUM
    }
}
//方式三(辅助函数)
//项目中常用的方式
<template>
    {{GET_BOOK_NUM}}
</template>
import {mapGetters} from 'vuex'
computed:{  
      ...mapGetters(['GET_BOOK_NUM'])  
}

三、mapMutations

mapMutations 其实跟mapState、mapGetters 的作用是类似的,将组件中的 methods 映射为store.commit 调用。

在store文件中定义mutations

//  store.js
  mutations:{
    changeNumber1(state, val){
      state.number1 += val
    },
    changeNumber2(state, val){
      state.number2 += val
    },
  },

每一个mutation接受两个参数,一个是state,一个是传入值;

在组件中使用mapMutations,放置在methods里面。

// App.vue
<template>
  <div>
    <h1>{{number1}}</h1>
    <h2 @click="changeNumber1">+{{number1}}</h2>
    <h1>{{number2}}</h1>
    <h2 @click="changeNumber2">+{{number2}}</h2>
  </div>
</template>
import { mapMutations } from 'vuex'
export default{
  computed:{
        ...mapState(['number1','number2']) 
  }
  methods:{
    ...mapMutations(['changeNumber1','changeNumber2']),
  }
  //映射 this.changeNumber1() 为 this.$store.commit('changeNumber1')
  //映射 this.changeNumber2() 为 this.$store.commit('changeNumber2')
}

四、mapActions

mapActions将组件中的 methods 映射为store.dispatch 调用。

在store文件中定义actions

//  store.js
  mutations:{
    changeNumber1(state, val){
      state.number1 += val
    },
    changeNumber2(state, val){
      state.number2 += val
    },
  },
  actions:{
    changeNumber1Action(context,val){
      context.commit('changeNumber1',val);
    },
    changeNumber2Action(context,val){
      context.commit('changeNumber2',val);
    }
  }

每一个action接受两个参数,一个是context(上下文),一个是传入值;

在组件中使用mapActions,放置在methods里面。

// App.vue
<template>
  <div>
    <h1>{{number1}}</h1>
    <h2 @click="changeNumber1Action">+{{number1}}</h2>
    <h1>{{number2}}</h1>
    <h2 @click="changeNumber2Action">+{{number2}}</h2>
  </div>
</template>
import { mapActions} from 'vuex'
export default{
  methods: {
    ...mapActions([
      'changeNumber1Action','changeNumber2Action'
    ]),
     //映射 this.changeNumber1Action() 为 this.$store.dispatch('changeNumber1Action')
     //映射 this.changeNumber2Action() 为 this.$store.dispatch('changeNumber2Action')
  }
相关文章
|
数据可视化 数据挖掘
Seurat 中的数据可视化方法
Seurat 中的数据可视化方法
|
2月前
|
人工智能 测试技术
豆包怎么导出 Word?整理写作草稿、表格和办公内容的流程
豆包内容转Word需兼顾格式与审校:短文本可直接复制,含标题/表格/代码者推荐导出Markdown后用DeepShare等工具转换,确保结构完整;所有AI生成内容均须人工核对事实、删冗余、补案例,方可正式交付。
|
Java Maven
关于The POM for xxxxxx:jar:s missing, no dependency information avail 问题的解决
关于The POM for xxxxxx:jar:s missing, no dependency information avail 问题的解决
1407 1
|
9月前
|
缓存 应用服务中间件 API
Nginx
Nginx:现代互联网的流量调度核心,以事件驱动架构解决高并发难题,集高性能Web服务、反向代理、负载均衡与API网关于一体,助力网站加速与系统稳定,支撑海量用户实时交互,是数字时代不可或缺的基础设施引擎。
|
缓存 Linux 调度
【YashanDB数据库】VMware虚拟机使用默认安装,在掉电之后数据库无法启动
VMware虚拟机使用默认安装,在掉电之后数据库无法启动
|
安全 Java 编译器
什么是AOP面向切面编程?怎么简单理解?
本文介绍了面向切面编程(AOP)的基本概念和原理,解释了如何通过分离横切关注点(如日志、事务管理等)来增强代码的模块化和可维护性。AOP的核心概念包括切面、连接点、切入点、通知和织入。文章还提供了一个使用Spring AOP的简单示例,展示了如何定义和应用切面。
1819 1
什么是AOP面向切面编程?怎么简单理解?
|
存储 编解码 网络协议
阿里云服务器计算型和通用型四代云服务器实例区别及选择参考
目前阿里云在售的云服务器中,计算型和通用型实例规格都包含了第5代、第6代、第7代和最新第八代倚天云服务器产品,例如计算型实例中有c5、c6、c7、c8y实例,而通用型实例有g5、g6、g7、g8y等实例,有的新手用户并不清楚这四代产品之间的差别,本文为大家展示这四代云服务器实例在规格、CPU(核)、内存(G)、计算、存储、内存以及不同配置的指标数据等方面为大家做个对比,让大家了解一下他们之间的不同,以供参考和选择。
阿里云服务器计算型和通用型四代云服务器实例区别及选择参考
|
存储 定位技术 API
uniapp获取地理位置的API是什么?
uniapp获取地理位置的API是什么?
838 1
|
编译器 开发工具 Android开发
Android 12 新特性深度解析
【2月更文挑战第15天】 随着移动操作系统的不断进化,Android 12带来了一系列创新功能与性能提升。本文将深入剖析Android 12的核心新特性,包括隐私仪表盘、通知管理、设备控制以及性能优化等方面,为开发者和用户提供全面的更新指南。