• 【Vue】vuex mapState和mapGetters


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

    1. computed: {
    2. // 借助mapState生成计算属性:sum、school、subject(对象写法一)
    3. ...mapState({sum:'sum',school:'school',subject:'subject'}),
    4. // 借助mapState生成计算属性:sum、school、subject(数组写法二)
    5. ...mapState(['sum','school','subject']),
    6. },

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

    1. computed: {
    2. //借助mapGetters生成计算属性:bigSum(对象写法一)
    3. ...mapGetters({bigSum:'bigSum'}),
    4. //借助mapGetters生成计算属性:bigSum(数组写法二)
    5. ...mapGetters(['bigSum'])
    6. },

    示例:

    通过计算属性可以简化模板上写的内容

    防止插值语法写的过长

    这边我们发现其实用计算属性直接写也比较麻烦, 红色线都是重复的内容而 vuex 的某个方法可以帮助你简化

    通过分析, 可以看出只要把变化的东西交给某个函数即可

    这边变化的东西为方法名state 里面的值名

    这边要在 vuex 里面引入一个一个 mapState

    里面写入对象, 注意写成字符串, 形式 he : 'sum'(其实 he 也是一个字符串, 但是可以省略)

    然后我们先调用一个 mapState 看一下是什么

    发现是一个对象

    然后我们把这个直接写入计算属性发现报错

    因为计算属性是一个方法, 在方法里面直接写对象显然是不正确的

    用一个 es6 的解决方法

    下图...obj2, // 表示把 obj2 的内容展开放入在 obj 里

    并且是放在中间的, 与写的位置对应

    所以同理

    把函数前加入... 在最后加一个逗号就行

    但注意的点是

    当自己用计算属性写时, 计算属性会在开发者工具中显示出来

    当我们不自己去写计算属性, 通过 mapState 去实现时,其实它也是计算属性

    发现开发者工具里面把它们分类在了 vue 的绑定上, 其实我们知道这里面的东西都是隶属于 computed 上的

    这是对象写法

    下面为数组写法

    我们先回顾一个简写

    这边对象里面的 key 和要找的变量名一致时, 就可以简写为 a

    但是如果时一个字符串那就不可以简写了!!!!

    所以这边的对象用简写方式行不通, 因为是字符串

    所以可以尝试用数组方法写

    相当于在计算属性里, 写了一个方法名字为 sum, 而且读取的是 state 里面的 sum

    但是要注意的是想用数组写法的话

    如下写就是错误的因为 state 里面没有 he xuexiao xueke 等数据名

    当对于 getters 时

    就再引用一个 mapGetters

    同理

  • 相关阅读:
    D. Make It Round(贪心 贡献 数学)[Codeforces Round #834 (Div. 3)]
    【Lipschitz】基于matlab的Lipschitz李氏指数仿真
    ROS读书记录1:机器人SLAM导航核心技术与实战1
    assimp中如何判断矩阵是否是单位矩阵
    学习笔记-SQLi
    vuex的模块化和namespaced
    计算机毕业设计(附源码)python迎新系统
    JRT多平台托盘优化
    我在2022北大夏令营被吊起来打
    vscode配置typescript及简单使用
  • 原文地址:https://blog.csdn.net/qq_37308779/article/details/125906875