vuex中的四个map方法的使用小结

 更新时间:2023年05月31日 11:27:30   作者:小花皮猪  
vuex里面有四个map方法,他们分别可以针对不同的元素进行不同的代码生成,本文就来详细的介绍一下vuex中的四个map方法,具有一定的参考价值,感兴趣的可以了解一下

vuex里面有四个map方法,他们分别可以针对不同的元素进行不同的代码生成

这四个map方法都是异曲同工,明白了一个基本上都明白了

1 编写案例

现在想要展示一段文本,其中里面两个参数要存在store的state里面,那么每次获取都要通过这么一大串代码获取,及其复杂且不美观,vue的风格指南就说过插值语法不要写的这么复杂

2 计算属性简化

当然我们可以可以通过计算属性简化,但是计算属性只支持在当前组件使用

但是可以观察发现,其实都是读取的store.state.x里面的数据,代码都是一样的,所以是否有办法生成或者封装这些冗余的代码呢?

vuex的设计者当然也考虑到了这个问题,下面我们就去使用生成相关代码的函数

3 mapState简化

想要使用生成相关代码的函数,需要先引入vuex,从vuex身上引入mapState

// 引入vuex身上的mapState
import {mapState} from 'vuex'

mapState是一个对象,里面有很多组key,value,它有两种写法

写法1(对象写法)

  // 借助mapState生成计算属性,从state中读取数据(对象写法)
  ...mapState({sum:'sum',address:'address',info:'info'}),

写法2(数组写法)

除了对象写法,还有更为精简的数组写法

注意,此时一定不能直接写成对象简写形式,应该放到一个数组里面再进行简写形式

每一个key都有两个用途,一个用途是生成的计算属性名称,另外一个是从state里面读取的属性名称

// 借助mapState生成计算属性,从state中读取数据(数组写法)
    ...mapState(['sum','address','info']),

4 mapGetters简化

mapGetters和mapState的写法是一样的,首先需要从vuex里面引用出来

写法也是分为对象和数组写法,和mapState如出一辙

写法1(对象写法)

// 借助mapGetters生成计算属性,从getters中读取数据(对象写法)
...mapGetters({bigSum:'bigSum'}),

写法2(数组写法)

// 借助mapGetters生成计算属性,从getters中读取数据(数组写法)
 ...mapGetters(['bigSum']),

到此mapState和mapState对于计算属性的优化就结束了,下面是mapActions和mapMutations优化methods

注意观察,这些代码也都是很相似的,我们也是可以进行优化的

5 mapMutations

首先也是引入vuex中的mapMutations

写法1(对象写法)

 // 借助mapMutations生成对应的方法,方法中会调用commit去联系mutations(对象写法)
 ...mapMutations({increment:'INCREMENT',decrement:'DECREMENT'})

这时候发现问题

这时候我们需要给事件绑定参数

这样就解决了

写法2(数组写法)

// 借助mapMutations生成对应的方法,方法中会调用commit去联系mutations(数组写法)
 ...mapMutations(['INCREMENT','DECREMENT']),

6 mapActions

首先还是引入vuex中的 mapActions

// 引入vuex身上的mapState和mapGetters和mapMutations和mapActions
import {mapState,mapGetters,mapMutations,mapActions} from 'vuex'

写法1(对象写法)

 // 借助mapActions生成对应的方法,方法中会调用dispatch去联系actions(对象写法)
 ...mapActions({incrementOdd:'incrementOdd',incrementOdd:'incrementOdd'}),

写法2(数组写法)

// 借助mapActions生成对应的方法,方法中会调用dispatch去联系actions(数组写法)
...mapActions(['incrementOdd','incrementWait']),

7 总结

1 mapState方法: 用于帮助我们映射state中的数据为计算属性

computed: {
    //借助mapState生成计算属性:sum、school、subject(对象写法)
     ...mapState({sum:'sum',school:'school',subject:'subject'}),
    //借助mapState生成计算属性:sum、school、subject(数组写法)
    ...mapState(['sum','school','subject']),
},

2 mapGetters方法: 用于帮助我们映射getters中的数据为计算属性

computed: {
    //借助mapGetters生成计算属性:bigSum(对象写法)
    ...mapGetters({bigSum:'bigSum'}),
    //借助mapGetters生成计算属性:bigSum(数组写法)
    ...mapGetters(['bigSum'])
},

3 mapActions方法: 用于帮助我们生成与actions对话的方法,即:包含$store.dispatch(xxx)的函数

methods:{
    //靠mapActions生成:incrementOdd、incrementWait(对象形式)
    ...mapActions({incrementOdd:'jiaOdd',incrementWait:'jiaWait'})
    //靠mapActions生成:incrementOdd、incrementWait(数组形式)
    ...mapActions(['jiaOdd','jiaWait'])
}

4 mapMutations方法: 用于帮助我们生成与mutations对话的方法,即:包含$store.commit(xxx)的函数

methods:{
    //靠mapActions生成:increment、decrement(对象形式)
    ...mapMutations({increment:'JIA',decrement:'JIAN'}),
    //靠mapMutations生成:JIA、JIAN(对象形式)
    ...mapMutations(['JIA','JIAN']),
}

备注:mapActions与mapMutations使用时,若需要传递参数需要:在模板中绑定事件时传递好参数,否则参数是事件对象。

到此这篇关于vuex中的四个map方法的使用小结的文章就介绍到这了,更多相关vuex map使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 基于iview的router常用控制方式

    基于iview的router常用控制方式

    这篇文章主要介绍了基于iview的router常用控制方式,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-05-05
  • 基于Vue设计实现一个弹幕组件

    基于Vue设计实现一个弹幕组件

    这篇文章主要给大家分享一个开发中常见的需求,接下来将为大家详细介绍弹幕的实现以及设计思路一步一步描述出来,希望大家能够喜欢
    2023-06-06
  • vue路由拦截及页面跳转的设置方法

    vue路由拦截及页面跳转的设置方法

    这篇文章主要介绍了vue路由拦截及页面跳转的设置方法,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-05-05
  • vue 组件高级用法实例详解

    vue 组件高级用法实例详解

    这篇文章主要介绍了vue 组件高级用法,需要的朋友可以参考下
    2018-04-04
  • Vue和relation-graph库打造高质量的关系图应用程序

    Vue和relation-graph库打造高质量的关系图应用程序

    这篇文章主要介绍了Vue和relation-graph库打造高质量的关系图应用程序,在这篇文章中,我们深入探讨了如何使用Vue和relation-graph高效打造关系图,我们详细介绍了数据准备、关系映射、点击事件等关键步骤,需要的朋友可以参考下
    2023-09-09
  • vant 中van-list的用法说明

    vant 中van-list的用法说明

    这篇文章主要介绍了vant 中van-list的用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • vue调试工具vue-devtools的安装全过程

    vue调试工具vue-devtools的安装全过程

    这篇文章主要介绍了vue调试工具vue-devtools的安装全过程,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06
  • vue实现列表展示示例详解

    vue实现列表展示示例详解

    这篇文章主要为大家介绍了vue实现列表展示的示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-07-07
  • vue element-ui table表格滚动加载方法

    vue element-ui table表格滚动加载方法

    下面小编就为大家分享一篇vue element-ui table表格滚动加载方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-03-03
  • 如何在 Vue 中使用 JSX

    如何在 Vue 中使用 JSX

    这篇文章主要介绍了如何在 Vue 中使用 JSX,帮助大家更好的理解和使用vue,感兴趣的朋友可以了解下
    2021-02-02

最新评论