Vuex辅助函数的使用(mapState、mapActions、mapMutations、mapGetters)

news/2024/7/24 12:02:24 标签: vue, vue.js, javascript, json, 前端

本文章介绍vuex中辅助函数的使用,如果想学习vuex基础的小伙伴可以点击此链接进入上一篇文章

一、为什么需要使用辅助函数

当一个组件需要对多个状态进行操作的时候,代码会有些重复和冗余,我们可以使用辅助函数帮助我们用极少的代码解决这些问题。
注意:使用mapActions、mapMutations时需要在template中传参

累加器案例

展示效果:
在这里插入图片描述

template代码:

<div>
  累加器:{{sum}}
  *100后={{sumHandler}} <br>
  <select v-model="num">
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
  </select>
  <button @click="add(num)">普通加</button>
  <button @click="addSync(num)">延时加</button>
</div>

storeindex.js代码:

javascript">export default new Vuex.Store({
  state: {
    sum: 0,
  },
  mutations: {
    add(state,num) {
      state.sum += num*1
    }
  },
  actions: {
    addSync(store,num) {
      setTimeout(() => {
        store.commit('add',num)
      },1000)
    }
  },
  getters: {
    sumHandler(state) {
      return state.sum*100
    }
  },
})

二、使用mapState

组件中导入辅助函数:

javascript">import { mapState } from 'vuex'

简写形式:

javascript">export default {
  computed: ...mapState(["sum"]),
}

等同于以下代码:

javascript">export default {
  computed: sum(){return this.$store.state.sum},
}

三、mapGetters

组件中导入辅助函数:

javascript">import { mapGetters } from 'vuex'

简写形式:

javascript">export default {
  computed: ...mapGetters(['sumHandler']),
}

等同于以下代码:

javascript">export default {
  computed: sum(){return this.$store.getters.sumHandler},
}

四、mapMutations

组件中导入辅助函数:

javascript">import { mapMutations } from 'vuex'

简写形式:

javascript">export default {
  methods: ...mapMutations(['add']),
}

等同于以下代码:

javascript">export default {
  methods: add(){return this.$store.commit('add',this.num)},
}

五、mapActions

组件中导入辅助函数:

javascript">import { mapActions } from 'vuex'

简写形式:

javascript">export default {
  methods: ...mapActions(['addSync']),
}

等同于以下代码:

javascript">export default {
  methods: addSync(){return this.$store.dispatch('addSync',this.num)},
}

http://www.niftyadmin.cn/n/1527282.html

相关文章

mapState应该怎么去引modules中的数据?

store里的数据分成模块后&#xff0c;mapState辅助函数里应该怎么引模块的数据&#xff1f; store文件结构&#xff1a; - src - components - store- index.js- modules- carts.jsstore中index.js代码&#xff1a; modules: { carts&#xff0c;//注册carts模块}template代…

axios使用方法

axios封装代码传送门&#xff08;可直接使用&#xff09; 1、基本用法 安装 cnpm i axios --save在 main.js 中引入 axios import axios from axios Vue.prototype.$axios axios在组件中使用 axios <script>export default {mounted(){this.$axios.get(/goods.json…

解决VS2019取消对空指针的引用问题,以及空指针报错问题

解决VS2019取消对空指针的引用的警告问题&#xff0c;以及空指针报错问题 取消对空指针的引用警告 &#xff08;之前有个方法是在判断执行后使用return语句退出这个函数&#xff0c;但存在很多问题&#xff0c;比如与函数类型不匹配等等&#xff0c;所以下面改成直接退出程序…

axios封装代码(直接使用)

axios基础用法传送门&#xff08;点击这里&#xff09; 话不多说&#xff0c;直接上代码 一、在组件中调用 封装在http文件中 import axios from axios//创建axios实例 const axiosObj axios.create({baseURL: http://api.web1024.cn,timeout: 8000,params: {key: gxn759} …

Java文本文件的写入与输出

文章目录文件的写入文件读取文件的写入 public static void main(String[] args) throws IOException { PrintWriter out new PrintWriter("data.txt", StandardCharsets.UTF_8); out.print("123456789"); out.printf("%d", 123456); out.clos…

html文本溢出隐藏三个小圆点

直接上代码&#xff1a; overflow: hidden; text-overflow: ellipsis; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical;

深入理解Java字符类型与字符串

深入理解Java字符类型与字符串 文章目录深入理解Java字符类型与字符串1.Unicode编码基本数据类型&#xff1a;char字符串Stringsubstring方法&#xff08;截取字符串&#xff09;join方法&#xff08;&#xff09;&#xff08;连接方法&#xff09;repeat方法&#xff08;重复方…

Elementui中表格的表头设置背景颜色

表格的header-cell-style属性是表头单元格的 style 的回调方法&#xff0c;也可以使用一个固定的 Object 为所有表头单元格设置一样的 Style。 <el-table :datalist border :header-cell-style"{background:#f5f7fa,color:#606266}">