优化计算属性mapState、mapGetters和methods的mapActions、mapMutations

本文主要是介绍优化计算属性mapState、mapGetters和methods的mapActions、mapMutations,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

优化计算属性mapState、mapGetters和methods的mapActions、mapMutations

在学习以下内容前,先了解ES6的拓展运算符’…’

  • ‘…’的功能:可以将所在数组或对象进行拆分,也就是将[]和{}去除
let arr = [1, 2, 3, 4, 5]
console.log(...arr)
// 执行结果
1 2 3 4 5let arr = {x : 1,y : 2
}
console.log({...arr})
// 执行结果
{x : 1, y : 2}

mapState、mapGetters、mapActions、mapMutations的两种写法

  • 第一种:数组形式(保证computed的属性名、methods的方法名和state的对象名是一致的)
computed : {// 数组形式...mapState(['对象名1', '对象名2', '对象名3']),...mapGetters(['方法名1', '方法名2', '方法名3'])
},
methods: {// 数组形式...mapActions(['对象名1', '对象名2', '对象名3']),...mapMutations(['方法名1', '方法名2', '方法名3'])
}
  • 第二种:对象形式(属性名和值可以一致,也可不一致)
computed : {// 对象形式...mapState({属性名1 : '值1', 属性名2 : '值2', 属性名3 : '值3'}),...mapGetters({属性名1 : '值1', 属性名2 : '值2', 属性名3 : '值3'})
},
methods: {// 对象形式...mapActions({属性名1 : '值1', 属性名2 : '值2', 属性名3 : '值3'}),...mapMutations({属性名1 : '值1', 属性名2 : '值2', 属性名3 : '值3'})
}

有没有mapState、mapGetters、mapActions、mapMutations的区别

  • 没有mapState、mapGetters、mapActions、mapMutations
<template><div><h3>mapState:{{mS}}</h3><h3>mapGetters:{{mG}}</h3><button @click="mAB">mapActions Button</button><button @click="mMB">mapMutations Button</button></div>
</template><script>export default {name : 'Name',computed : {mS(){return this.$store.state.mS},mG(){return this.$store.getters.mG}},methods : {mAB(){return this.$store.dispatch('mAB')},mMB(){return this.$store.commit('mMB')}}}
</script>
  • 有mapState、mapGetters、mapActions、mapMutations(数组形式)
<template><div><h3>mapState:{{mS}}</h3><h3>mapGetters:{{mG}}</h3><button @click="mAB">mapActions Button</button><button @click="mMB">mapMutations Button</button></div>
</template><script>// 使用的时候可以先引入,也可以自动添加import {mapState, mapGetters, mapActions, mapMutations} from 'vuex'export default {name : 'Name',computed : {...mapState(['mS']),...mapGetters(['mG'])},methods : {...mapActions(['mAB']),...mapMutations(['mMB'])}}
</script>
  • 区别:在使用...mapState(['user'])时,相当于生成了一个user(){return this.$store.state.user}(举例说明,其他类型同样)
  • 注意:在计算属性中,要确保属性名和state的对象名、方法名和actions方法名是一致的才能使用mapState、mapGetters的数组形式。对象形式如果是{user : 'user'}一致的情况也可以使用,但若两边不一致则需要进行区分。(建议弄成一致的形式)(举例说明,其他类型同样)
属性名(){return this.$store.state.对象名
}方法名(){return this.$store.dispatch('方法名')
}

注意:v-model指令跟mapState、mapGetters不能一同使用。

  • 因为mapState、mapGetters所使用的方法只有get,没有set,而v-model指令是双向绑定,要有set和get,所以在v-model指令中还是使用原有的方式{{$store.state.(模块名).对象名}}去调用即可。

使用modules的mapState、mapGetters、mapActions、mapMutations的写法

// store.js文件
const a = {actions : {......},mutations : {......},state : {......},getters : {......}
}export default new Vuex.Store({modules : {aModule : a}
})
// Name.vue
<template><div><h3>mapState:{{mS}}</h3><h3>mapGetters:{{mG}}</h3><button @click="mAB">mapActions Button</button><button @click="mMB">mapMutations Button</button></div>
</template><script>// 使用的时候可以先引入,也可以自动添加import {mapState, mapGetters, mapActions, mapMutations} from 'vuex'export default {name : 'Name',computed : {...mapState('aModule', ['mS']),...mapGetters('aModule', ['mG'])},methods : {...mapMutations('aModule', ['mAB']),...mapActions('aModule', ['mMB'])}}
</script>

这篇关于优化计算属性mapState、mapGetters和methods的mapActions、mapMutations的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/299575

相关文章

Linux进程CPU绑定优化与实践过程

《Linux进程CPU绑定优化与实践过程》Linux支持进程绑定至特定CPU核心,通过sched_setaffinity系统调用和taskset工具实现,优化缓存效率与上下文切换,提升多核计算性能,适... 目录1. 多核处理器及并行计算概念1.1 多核处理器架构概述1.2 并行计算的含义及重要性1.3 并

Linux线程之线程的创建、属性、回收、退出、取消方式

《Linux线程之线程的创建、属性、回收、退出、取消方式》文章总结了线程管理核心知识:线程号唯一、创建方式、属性设置(如分离状态与栈大小)、回收机制(join/detach)、退出方法(返回/pthr... 目录1. 线程号2. 线程的创建3. 线程属性4. 线程的回收5. 线程的退出6. 线程的取消7.

MyBatisPlus如何优化千万级数据的CRUD

《MyBatisPlus如何优化千万级数据的CRUD》最近负责的一个项目,数据库表量级破千万,每次执行CRUD都像走钢丝,稍有不慎就引起数据库报警,本文就结合这个项目的实战经验,聊聊MyBatisPl... 目录背景一、MyBATis Plus 简介二、千万级数据的挑战三、优化 CRUD 的关键策略1. 查

python删除xml中的w:ascii属性的步骤

《python删除xml中的w:ascii属性的步骤》使用xml.etree.ElementTree删除WordXML中w:ascii属性,需注册命名空间并定位rFonts元素,通过del操作删除属... 可以使用python的XML.etree.ElementTree模块通过以下步骤删除XML中的w:as

Python打印对象所有属性和值的方法小结

《Python打印对象所有属性和值的方法小结》在Python开发过程中,调试代码时经常需要查看对象的当前状态,也就是对象的所有属性和对应的值,然而,Python并没有像PHP的print_r那样直接提... 目录python中打印对象所有属性和值的方法实现步骤1. 使用vars()和pprint()2. 使

Python并行处理实战之如何使用ProcessPoolExecutor加速计算

《Python并行处理实战之如何使用ProcessPoolExecutor加速计算》Python提供了多种并行处理的方式,其中concurrent.futures模块的ProcessPoolExecu... 目录简介完整代码示例代码解释1. 导入必要的模块2. 定义处理函数3. 主函数4. 生成数字列表5.

CSS3中的字体及相关属性详解

《CSS3中的字体及相关属性详解》:本文主要介绍了CSS3中的字体及相关属性,详细内容请阅读本文,希望能对你有所帮助... 字体网页字体的三个来源:用户机器上安装的字体,放心使用。保存在第三方网站上的字体,例如Typekit和Google,可以link标签链接到你的页面上。保存在你自己Web服务器上的字

SpringBoot读取ZooKeeper(ZK)属性的方法实现

《SpringBoot读取ZooKeeper(ZK)属性的方法实现》本文主要介绍了SpringBoot读取ZooKeeper(ZK)属性的方法实现,强调使用@ConfigurationProperti... 目录1. 在配置文件中定义 ZK 属性application.propertiesapplicati

Java反射实现多属性去重与分组功能

《Java反射实现多属性去重与分组功能》在Java开发中,​​List是一种非常常用的数据结构,通常我们会遇到这样的问题:如何处理​​List​​​中的相同字段?无论是去重还是分组,合理的操作可以提高... 目录一、开发环境与基础组件准备1.环境配置:2. 代码结构说明:二、基础反射工具:BeanUtils

MySQL 事务的概念及ACID属性和使用详解

《MySQL事务的概念及ACID属性和使用详解》MySQL通过多线程实现存储工作,因此在并发访问场景中,事务确保了数据操作的一致性和可靠性,下面通过本文给大家介绍MySQL事务的概念及ACID属性和... 目录一、什么是事务二、事务的属性及使用2.1 事务的 ACID 属性2.2 为什么存在事务2.3 事务