优化计算属性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

相关文章

HTML5的input标签的`type`属性值详解和代码示例

《HTML5的input标签的`type`属性值详解和代码示例》HTML5的`input`标签提供了多种`type`属性值,用于创建不同类型的输入控件,满足用户输入的多样化需求,从文本输入、密码输入、... 目录一、引言二、文本类输入类型2.1 text2.2 password2.3 textarea(严格

input的accept属性让文件上传安全高效

《input的accept属性让文件上传安全高效》文章介绍了HTML的input文件上传`accept`属性在文件上传校验中的重要性和优势,通过使用`accept`属性,可以减少前端JavaScrip... 目录前言那个悄悄毁掉你上传体验的“常见写法”改变一切的 html 小特性:accept真正的魔法:让

C#借助Spire.XLS for .NET实现在Excel中添加文档属性

《C#借助Spire.XLSfor.NET实现在Excel中添加文档属性》在日常的数据处理和项目管理中,Excel文档扮演着举足轻重的角色,本文将深入探讨如何在C#中借助强大的第三方库Spire.... 目录为什么需要程序化添加Excel文档属性使用Spire.XLS for .NET库实现文档属性管理Sp

Spring Boot基于 JWT 优化 Spring Security 无状态登录实战指南

《SpringBoot基于JWT优化SpringSecurity无状态登录实战指南》本文介绍如何使用JWT优化SpringSecurity实现无状态登录,提高接口安全性,并通过实际操作步骤... 目录Spring Boot 实战:基于 JWT 优化 Spring Security 无状态登录一、先搞懂:为什

Java JAR 启动内存参数配置指南(从基础设置到性能优化)

《JavaJAR启动内存参数配置指南(从基础设置到性能优化)》在启动Java可执行JAR文件时,合理配置JVM内存参数是保障应用稳定性和性能的关键,本文将系统讲解如何通过命令行参数、环境变量等方式... 目录一、核心内存参数详解1.1 堆内存配置1.2 元空间配置(MetASPace)1.3 线程栈配置1.

vue监听属性watch的用法及使用场景详解

《vue监听属性watch的用法及使用场景详解》watch是vue中常用的监听器,它主要用于侦听数据的变化,在数据发生变化的时候执行一些操作,:本文主要介绍vue监听属性watch的用法及使用场景... 目录1. 监听属性 watch2. 常规用法3. 监听对象和route变化4. 使用场景附Watch 的

Docker多阶段镜像构建与缓存利用性能优化实践指南

《Docker多阶段镜像构建与缓存利用性能优化实践指南》这篇文章将从原理层面深入解析Docker多阶段构建与缓存机制,结合实际项目示例,说明如何有效利用构建缓存,组织镜像层次,最大化提升构建速度并减少... 目录一、技术背景与应用场景二、核心原理深入分析三、关键 dockerfile 解读3.1 Docke

Python实现精确小数计算的完全指南

《Python实现精确小数计算的完全指南》在金融计算、科学实验和工程领域,浮点数精度问题一直是开发者面临的重大挑战,本文将深入解析Python精确小数计算技术体系,感兴趣的小伙伴可以了解一下... 目录引言:小数精度问题的核心挑战一、浮点数精度问题分析1.1 浮点数精度陷阱1.2 浮点数误差来源二、基础解决

从原理到实战解析Java Stream 的并行流性能优化

《从原理到实战解析JavaStream的并行流性能优化》本文给大家介绍JavaStream的并行流性能优化:从原理到实战的全攻略,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的... 目录一、并行流的核心原理与适用场景二、性能优化的核心策略1. 合理设置并行度:打破默认阈值2. 避免装箱

Python实战之SEO优化自动化工具开发指南

《Python实战之SEO优化自动化工具开发指南》在数字化营销时代,搜索引擎优化(SEO)已成为网站获取流量的重要手段,本文将带您使用Python开发一套完整的SEO自动化工具,需要的可以了解下... 目录前言项目概述技术栈选择核心模块实现1. 关键词研究模块2. 网站技术seo检测模块3. 内容优化分析模