Vuex各个属性之间调用的方法:

    https://blog.csdn.net/qq_36437172/article/details/108564329

    一、如何使用Vuex中的全局状态(state)

    我们在Vuex中state里定义了一个count:10,(和父组件中的data类似),我们如果在子组件中使用这个状态,需要在子组件的computed(计算属性)中的一个方法中返回这个状态,然后在子组件中调用这个方法。

    例如,在下面这个子组件中,我们通过$store获取Vuex的全局实例,state表示获取实例下的state,然后在后面再获取state中的状态。在子组件的script中需要在前面加上this,template中使用就不需要了

    如何使用Vuex中的全局状态 - 图1

    二、如果我们要使用多个状态,可以使用——mapState辅助函数

    我们需要在子组件中引入Vuex下的一个辅助函数——mapState

    例如:

    import { mapState } from “vuex”; export default { // 可以接收一个数组,不过这样只能全局状态叫什么,取得时候就只能叫什么 computed:mapState([ “name”, “age”, “sex” ]), // 1、可以接收一个对象,我们可以给全局对象在当前子组件下重新命名 // 2、还可以直接在键名后面用表达式做计算 // 3、如果要使用子组件里面的数据,那么箭头函数要改写成普通函数,否则this的指向会出问题 computed:mapState({ name2: “name”, sex: “sex”, age: (state) => state.age * 2, }) }

    这样做确实很方便,但是会引发一个问题,就是子组件的computed被辅助函数占用了,如果我们想要添加新的计算属性,在创建一个computed就会报错,这个时候,我们要考虑到mapState函数的返回值应该是一个对象,那么我们将这个返回值的对象和正常的computed的对象合并就可以正常写我们自己的计算属性了,那么我们可以这么做:

    computed:{ …mapState, 使用拓展运算符将mapState的返回值展开,然后下面继续写我们自己的计算属性就可以了 }