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 
      }
    }
  • 7
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue 3,你可以使用Vuex辅助函数来简化在组件使用Vuex的操作。下面是使用Vuex辅助函数的步骤: 首先,确保已经安装了VuexVue 3。 在你的Vue 3项目,创建一个store文件夹,并在其创建一个store.js文件。在store.js文件,你可以定义你的Vuex store,包括状态(state)、mutations、actions等。 ```javascript // store.js import { createStore } from 'vuex'; const store = createStore({ state: { // 状态 }, mutations: { // 修改状态的方法 }, actions: { // 异步操作的方法 }, }); export default store; ``` 在你的根组件(App.vue)使用`createApp`函数创建Vue实例时,将store传递给`use`方法,这样整个应用程序都可以访问到store。 ```javascript // App.vue import { createApp } from 'vue'; import store from './store'; createApp(App).use(store).mount('#app'); ``` 现在,你可以在任何组件使用Vuex辅助函数来访问store的状态和触发mutations或actions。 在组件,你可以使用`mapState`辅助函数来将store的状态映射到组件的计算属性。 ```javascript // MyComponent.vue import { mapState } from 'vuex'; export default { computed: { ...mapState(['stateProperty']), }, }; ``` 你也可以使用`mapMutations`辅助函数来将mutations映射到组件的methods,以便在组件触发mutations。 ```javascript // MyComponent.vue import { mapMutations } from 'vuex'; export default { methods: { ...mapMutations(['mutationName']), }, }; ``` 最后,你可以使用`mapActions`辅助函数将actions映射到组件的methods,以便在组件触发actions。 ```javascript // MyComponent.vue import { mapActions } from 'vuex'; export default { methods: { ...mapActions(['actionName']), }, }; ``` 这样,你就可以在Vue 3使用Vuex辅助函数来简化在组件使用Vuex了。希望对你有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值