vuex中如何使用mapState函数(vue2/vue3使用方法)


一、mapState的用途

通过…运算符进行结构,将store中的state进行映射。在template中可以直接使用,不需要通过this.$store.state一个个获取store中的state数据。
在vuex中可以导出该函数。

import { mapState} from 'vuex'

二、vue2中使用mapState

1.mapState中传入数组

computed: {
    ...mapState(['name', 'age']),//与state中的名字相同,在template中可以直接使用name,age
  },

2.mapState中传入对象

computed: {
    ...mapState({
      name1: state => state.name+'123',//与state中的名字不相同,可以进行处理
      age: state => state.age
    })
   },
  },

三、vue3的setup中使用mapState

import { useStore, mapState } from 'vuex'

setup(){
    const store = useStore() //获取到store对象
   // {nickname:function;age:function}
    const storeStsteFns = mapState(['name', 'age'])
    const storeState = {}
    Object.keys(storeStsteFns).forEach(item => {
    // 给函数绑定this
    const fn = storeStsteFns[item].bind({ $store: store })
    //用computed包裹,在computed中获取mapstate是通过this.$store.state方式获取
    storeState[item] = computed(fn)
    })
     return{
      ...storeState
  }
}

四、vue3中封装useState的Hook

新建usestate.js文件

import { mapState,useStore } from "vuex"
import { computed } from "vue"
export default function(mapper){
    const store = useStore()
    // {nickname:function;age:function}
    const storeStsteFns = mapState(mapper)
    const storeState = {}
    Object.keys(storeStsteFns).forEach(item => {
      // 给函数绑定this
      const fn = storeStsteFns[item].bind({ $store: store })
      // 在computed中获取mapstate是通过this.$store.state方式获取
      storeState[item] = computed(fn)
    })
    return storeState
}

组件中使用

import useState from "./hook/usestate"//导入改hook

 setup(){
   const storeState = useState(['name', 'age'])//使用useState
    // const storeState = useState({ //传入对象也可以
    //   emotion:state =>state.name+'hhh',
    //   myage:state =>state.age
    // })
     return{
       ...storeState 
      }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值