在vue3中使用vuex 4.x

在vue3中使用vuex 4.x
首先你需要下载最新版本的vuex

npm install vuex@next -S

首先通过命令新建脚手架,在src目录下新建store文件夹。并创建index.js入口和modules文件夹(因为我把模块拆分了)

在这里插入图片描述
2. user.js文件,一个独立的模块

const user = {
  namespaced: true,
  state () {
    return {
      userCount: 0
    }
  },
  mutations: {
    addUserMutaition (state, payload) {
      state.userCount += payload
    },
    increment (state, payload) {
      state.userCount -= payload
    }
  },
  actions: {
    addAction ({ commit, dispatch }, payload) {
      commit('addUserMutaition', payload)
    },
    increAction ({ commit }, payload) {
      commit('increment', payload)
    }
  },
  getters: {
    addGetters (state, getters, rootGetters) {
      return state.userCount * (getters.getters1)
    },
    getters1 (state, getters) {
      return state.userCount + 100
    }
  },
  modules: {}
}
export default user

在main.js这个入口文件中使用方法

import { createApp } from 'vue'
import App from './App.vue'
import store from './store'
// import router from './router'

const app = createApp(App)
// app.use(router)
app.use(store)

app.mount('#app')

在vue2组件中的用法, 和vue3组件中的用法

import { computed } from 'vue'
import { createNamespacedHelpers, useStore } from 'vuex'
const { mapState, mapGetters, mapActions, mapMutations } = createNamespacedHelpers('user')

第一种方式
在vue2 中使用vuex的方法和数据

  computed: {
    ...mapState(['userCount']),
    ...mapGetters({
      getters2: 'addGetters'
    })
  },
  methods: {
    ...mapActions({
      add2: 'addAction'
    }),
    ...mapMutations({
      addmutations: 'addUserMutaition'
    })
  },

第二种方式
在vue3中的使用, 当然代码的写法很多,

 setup () {
    const store = useStore()
    const userState = computed(() => store.state.user.userCount)
    const getterss = computed(() => store.getters['user/addGetters'])
    const action1 = mapActions({
      addCom: 'addAction',
      decrtement: 'increAction'
    })
    const mutations = mapMutations({
      addActiona: 'addUserMutaition',
      decrementa: 'increment'
    })
    return {
      userState,
      getterss,
      ...action1,
      ...mutations
    }
  }

详细分解见一下代码地址:https://gitee.com/AabbCcDdEe_abcde/vuex_learn

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值